{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7e2acac5",
   "metadata": {},
   "source": [
    "### Exact solution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "cab77013",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('Allen_Cahn.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['t']\n",
    "u = mat_data['u']\n",
    "\n",
    "# # Use the loaded variables as needed\n",
    "# print(x.shape)\n",
    "# print(t.shape)\n",
    "# print(u.shape)\n",
    "\n",
    "# X, T = np.meshgrid(x, t)\n",
    "# # Define custom color levels\n",
    "# c_levels = np.linspace(np.min(u), np.max(u), 100)\n",
    "\n",
    "# # Plot the contour\n",
    "# plt.figure()\n",
    "# plt.figure(figsize=(15, 5))\n",
    "# plt.contourf(T, X, u, levels=c_levels, cmap='coolwarm')\n",
    "# plt.xlabel('t')\n",
    "# plt.ylabel('x')\n",
    "# plt.title('Allen-cahn-Equation')\n",
    "# plt.colorbar()  # Add a colorbar for the contour levels\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84bf073b",
   "metadata": {},
   "source": [
    "### PINN data importing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1b028244",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20301, 2)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('X.mat')\n",
    "\n",
    "X = mat_data['X']\n",
    "\n",
    "mat_data1 = scipy.io.loadmat('y_pred.mat')\n",
    "\n",
    "u1 = mat_data1['y_pred']\n",
    "\n",
    "np.set_printoptions(threshold=np.inf)\n",
    "\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "27f7472a",
   "metadata": {},
   "outputs": [],
   "source": [
    "### Reshaping the solution\n",
    "\n",
    "u1 = u1.reshape(101, 201)\n",
    "u1_new = u1.T\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d177a69d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(201, 101)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u1_new.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a82fd0d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tani (20301, 1)\n"
     ]
    }
   ],
   "source": [
    "# Load the .mat file\n",
    "mat_data2 = scipy.io.loadmat('y_true.mat')\n",
    "\n",
    "u2 = mat_data2['y_true']\n",
    "print(\"tani\", u2.shape)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ed5635ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing libaries\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f74caeb0",
   "metadata": {},
   "outputs": [],
   "source": [
    "class LEMCell(nn.Module):\n",
    "    def __init__(self, ninp, nhid, dt):\n",
    "        super(LEMCell, self).__init__()\n",
    "        self.ninp = ninp\n",
    "        self.nhid = nhid\n",
    "        self.dt = dt\n",
    "        self.inp2hid = nn.Linear(ninp, 4 * nhid)\n",
    "        self.hid2hid = nn.Linear(nhid, 3 * nhid)\n",
    "        self.transform_z = nn.Linear(nhid, nhid)\n",
    "        self.reset_parameters()\n",
    "\n",
    "    def reset_parameters(self):\n",
    "        std = 1.0 / np.sqrt(self.nhid)\n",
    "        for w in self.parameters():\n",
    "            w.data.uniform_(-std, std)\n",
    "\n",
    "    def forward(self, x, y, z):\n",
    "        transformed_inp = self.inp2hid(x)\n",
    "        transformed_hid = self.hid2hid(y)\n",
    "        i_dt1, i_dt2, i_z, i_y = transformed_inp.chunk(4, 1)\n",
    "        h_dt1, h_dt2, h_y = transformed_hid.chunk(3, 1)\n",
    "\n",
    "        ms_dt_bar = self.dt * torch.sigmoid(i_dt1 + h_dt1)\n",
    "        ms_dt = self.dt * torch.sigmoid(i_dt2 + h_dt2)\n",
    "\n",
    "        z = (1. - ms_dt) * z + ms_dt * torch.tanh(i_y + h_y)\n",
    "        y = (1. - ms_dt_bar) * y + ms_dt_bar * torch.tanh(self.transform_z(z) + i_z)\n",
    "\n",
    "        return y, z\n",
    "\n",
    "# Define the LEM model\n",
    "class LEM(nn.Module):\n",
    "    def __init__(self, ninp, nhid, nout, dt=1.):\n",
    "        super(LEM, self).__init__()\n",
    "        self.nhid = nhid\n",
    "        self.cell = LEMCell(ninp, nhid, dt)\n",
    "        self.classifier = nn.Linear(nhid, nout)\n",
    "        self.init_weights()\n",
    "\n",
    "    def init_weights(self):\n",
    "        for name, param in self.named_parameters():\n",
    "            if 'classifier' in name and 'weight' in name:\n",
    "                nn.init.kaiming_normal_(param.data)\n",
    "\n",
    "    def forward(self, input):\n",
    "        y = input.data.new(input.size(1), self.nhid).zero_()\n",
    "        z = input.data.new(input.size(1), self.nhid).zero_()\n",
    "        for x in input:\n",
    "            y, z = self.cell(x, y, z)\n",
    "        out = self.classifier(y)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b42fd0df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7f801716b3b0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1c60d23c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 201  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 201\n",
    "sequence_length = 80  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 20000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0b0d588d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# data = scipy.io.loadmat('y_pred.mat')\n",
    "u1 = u1_new\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e9e2e9c8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (201,)\n",
      "input data shape (201, 80)\n",
      "Target data shape (201, 80)\n"
     ]
    }
   ],
   "source": [
    "input_data = u1[:, 0:80]\n",
    "target_data = u1[:, 1:81]\n",
    "\n",
    "test_data = u1[:, 80] ### Change here\n",
    "#test_target = u1[:, 81:101]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "#print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "9c682113",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 80, 201])\n",
      "Target tensor shape torch.Size([1, 80, 201])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data.T).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data.T).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "6910db13",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data.T).view(batch_size, 1, input_size).float()\n",
    "#test_target_tensor = torch.tensor(test_target.T).view(batch_size, 20, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c3477c5a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/20000, Loss: 0.4047427177429199\n",
      "Epoch: 20/20000, Loss: 0.3674259185791016\n",
      "Epoch: 30/20000, Loss: 0.3271979987621307\n",
      "Epoch: 40/20000, Loss: 0.2872202098369598\n",
      "Epoch: 50/20000, Loss: 0.2505701780319214\n",
      "Epoch: 60/20000, Loss: 0.2182461768388748\n",
      "Epoch: 70/20000, Loss: 0.1906850636005402\n",
      "Epoch: 80/20000, Loss: 0.1673887223005295\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/anaconda3/lib/python3.9/site-packages/torch/nn/modules/loss.py:530: UserWarning: Using a target size (torch.Size([1, 80, 201])) that is different to the input size (torch.Size([80, 201])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 90/20000, Loss: 0.1479588150978088\n",
      "Epoch: 100/20000, Loss: 0.1316629201173782\n",
      "Epoch: 110/20000, Loss: 0.1178707554936409\n",
      "Epoch: 120/20000, Loss: 0.1061105057597160\n",
      "Epoch: 130/20000, Loss: 0.0960263684391975\n",
      "Epoch: 140/20000, Loss: 0.0873415321111679\n",
      "Epoch: 150/20000, Loss: 0.0798336938023567\n",
      "Epoch: 160/20000, Loss: 0.0733141750097275\n",
      "Epoch: 170/20000, Loss: 0.0675948485732079\n",
      "Epoch: 180/20000, Loss: 0.0624248050153255\n",
      "Epoch: 190/20000, Loss: 0.0576975755393505\n",
      "Epoch: 200/20000, Loss: 0.0532994493842125\n",
      "Epoch: 210/20000, Loss: 0.0492991954088211\n",
      "Epoch: 220/20000, Loss: 0.0457226485013962\n",
      "Epoch: 230/20000, Loss: 0.0424895472824574\n",
      "Epoch: 240/20000, Loss: 0.0395416505634785\n",
      "Epoch: 250/20000, Loss: 0.0368363931775093\n",
      "Epoch: 260/20000, Loss: 0.0343484655022621\n",
      "Epoch: 270/20000, Loss: 0.0320536457002163\n",
      "Epoch: 280/20000, Loss: 0.0299359634518623\n",
      "Epoch: 290/20000, Loss: 0.0279799029231071\n",
      "Epoch: 300/20000, Loss: 0.0261692460626364\n",
      "Epoch: 310/20000, Loss: 0.0244929976761341\n",
      "Epoch: 320/20000, Loss: 0.0229402221739292\n",
      "Epoch: 330/20000, Loss: 0.0215012021362782\n",
      "Epoch: 340/20000, Loss: 0.0201670378446579\n",
      "Epoch: 350/20000, Loss: 0.0189296975731850\n",
      "Epoch: 360/20000, Loss: 0.0177818071097136\n",
      "Epoch: 370/20000, Loss: 0.0167166087776423\n",
      "Epoch: 380/20000, Loss: 0.0157279036939144\n",
      "Epoch: 390/20000, Loss: 0.0148099744692445\n",
      "Epoch: 400/20000, Loss: 0.0139575647190213\n",
      "Epoch: 410/20000, Loss: 0.0131658231839538\n",
      "Epoch: 420/20000, Loss: 0.0124302795156837\n",
      "Epoch: 430/20000, Loss: 0.0117468107491732\n",
      "Epoch: 440/20000, Loss: 0.0111115770414472\n",
      "Epoch: 450/20000, Loss: 0.0105210077017546\n",
      "Epoch: 460/20000, Loss: 0.0099717676639557\n",
      "Epoch: 470/20000, Loss: 0.0094607444480062\n",
      "Epoch: 480/20000, Loss: 0.0089850248768926\n",
      "Epoch: 490/20000, Loss: 0.0085418932139874\n",
      "Epoch: 500/20000, Loss: 0.0081288162618876\n",
      "Epoch: 510/20000, Loss: 0.0077434340491891\n",
      "Epoch: 520/20000, Loss: 0.0073835551738739\n",
      "Epoch: 530/20000, Loss: 0.0070471516810358\n",
      "Epoch: 540/20000, Loss: 0.0067323455587029\n",
      "Epoch: 550/20000, Loss: 0.0064374087378383\n",
      "Epoch: 560/20000, Loss: 0.0061607537791133\n",
      "Epoch: 570/20000, Loss: 0.0059009259566665\n",
      "Epoch: 580/20000, Loss: 0.0056566004641354\n",
      "Epoch: 590/20000, Loss: 0.0054265763610601\n",
      "Epoch: 600/20000, Loss: 0.0052097630687058\n",
      "Epoch: 610/20000, Loss: 0.0050051780417562\n",
      "Epoch: 620/20000, Loss: 0.0048119346611202\n",
      "Epoch: 630/20000, Loss: 0.0046292264014482\n",
      "Epoch: 640/20000, Loss: 0.0044563165865839\n",
      "Epoch: 650/20000, Loss: 0.0042925304733217\n",
      "Epoch: 660/20000, Loss: 0.0041372464038432\n",
      "Epoch: 670/20000, Loss: 0.0039898934774101\n",
      "Epoch: 680/20000, Loss: 0.0038499452639371\n",
      "Epoch: 690/20000, Loss: 0.0037169188726693\n",
      "Epoch: 700/20000, Loss: 0.0035903691314161\n",
      "Epoch: 710/20000, Loss: 0.0034698855597526\n",
      "Epoch: 720/20000, Loss: 0.0033550905063748\n",
      "Epoch: 730/20000, Loss: 0.0032456354238093\n",
      "Epoch: 740/20000, Loss: 0.0031411966774613\n",
      "Epoch: 750/20000, Loss: 0.0030414767097682\n",
      "Epoch: 760/20000, Loss: 0.0029461996164173\n",
      "Epoch: 770/20000, Loss: 0.0028551081195474\n",
      "Epoch: 780/20000, Loss: 0.0027679644990712\n",
      "Epoch: 790/20000, Loss: 0.0026845480315387\n",
      "Epoch: 800/20000, Loss: 0.0026046524289995\n",
      "Epoch: 810/20000, Loss: 0.0025280863046646\n",
      "Epoch: 820/20000, Loss: 0.0024546706117690\n",
      "Epoch: 830/20000, Loss: 0.0023842395748943\n",
      "Epoch: 840/20000, Loss: 0.0023166362661868\n",
      "Epoch: 850/20000, Loss: 0.0022517156321555\n",
      "Epoch: 860/20000, Loss: 0.0021893416997045\n",
      "Epoch: 870/20000, Loss: 0.0021293854806572\n",
      "Epoch: 880/20000, Loss: 0.0020717279985547\n",
      "Epoch: 890/20000, Loss: 0.0020162563305348\n",
      "Epoch: 900/20000, Loss: 0.0019628650043160\n",
      "Epoch: 910/20000, Loss: 0.0019114544847980\n",
      "Epoch: 920/20000, Loss: 0.0018619312904775\n",
      "Epoch: 930/20000, Loss: 0.0018142069457099\n",
      "Epoch: 940/20000, Loss: 0.0017681984463707\n",
      "Epoch: 950/20000, Loss: 0.0017238267464563\n",
      "Epoch: 960/20000, Loss: 0.0016810181550682\n",
      "Epoch: 970/20000, Loss: 0.0016397023573518\n",
      "Epoch: 980/20000, Loss: 0.0015998131129891\n",
      "Epoch: 990/20000, Loss: 0.0015612875577062\n",
      "Epoch: 1000/20000, Loss: 0.0015240660868585\n",
      "Epoch: 1010/20000, Loss: 0.0014880921225995\n",
      "Epoch: 1020/20000, Loss: 0.0014533126959577\n",
      "Epoch: 1030/20000, Loss: 0.0014196767006069\n",
      "Epoch: 1040/20000, Loss: 0.0013871358241886\n",
      "Epoch: 1050/20000, Loss: 0.0013556440826505\n",
      "Epoch: 1060/20000, Loss: 0.0013251584023237\n",
      "Epoch: 1070/20000, Loss: 0.0012956371065229\n",
      "Epoch: 1080/20000, Loss: 0.0012671143049374\n",
      "Epoch: 1090/20000, Loss: 0.0012402675347403\n",
      "Epoch: 1100/20000, Loss: 0.0012125321663916\n",
      "Epoch: 1110/20000, Loss: 0.0011866019340232\n",
      "Epoch: 1120/20000, Loss: 0.0011613491224125\n",
      "Epoch: 1130/20000, Loss: 0.0011368513805792\n",
      "Epoch: 1140/20000, Loss: 0.0011131141800433\n",
      "Epoch: 1150/20000, Loss: 0.0010900624329224\n",
      "Epoch: 1160/20000, Loss: 0.0010676815873012\n",
      "Epoch: 1170/20000, Loss: 0.0010459433542565\n",
      "Epoch: 1180/20000, Loss: 0.0010248228209093\n",
      "Epoch: 1190/20000, Loss: 0.0010042964713648\n",
      "Epoch: 1200/20000, Loss: 0.0009843421867117\n",
      "Epoch: 1210/20000, Loss: 0.0009649388375692\n",
      "Epoch: 1220/20000, Loss: 0.0009460657020099\n",
      "Epoch: 1230/20000, Loss: 0.0009277036879212\n",
      "Epoch: 1240/20000, Loss: 0.0009098341688514\n",
      "Epoch: 1250/20000, Loss: 0.0008924392750487\n",
      "Epoch: 1260/20000, Loss: 0.0008755021844991\n",
      "Epoch: 1270/20000, Loss: 0.0008590068318881\n",
      "Epoch: 1280/20000, Loss: 0.0008430997841060\n",
      "Epoch: 1290/20000, Loss: 0.0008284621289931\n",
      "Epoch: 1300/20000, Loss: 0.0008120632846840\n",
      "Epoch: 1310/20000, Loss: 0.0007973370375112\n",
      "Epoch: 1320/20000, Loss: 0.0007827149238437\n",
      "Epoch: 1330/20000, Loss: 0.0007685990422033\n",
      "Epoch: 1340/20000, Loss: 0.0007547952118330\n",
      "Epoch: 1350/20000, Loss: 0.0007413419662043\n",
      "Epoch: 1360/20000, Loss: 0.0007282086880878\n",
      "Epoch: 1370/20000, Loss: 0.0007153851329349\n",
      "Epoch: 1380/20000, Loss: 0.0007028614636511\n",
      "Epoch: 1390/20000, Loss: 0.0006906269700266\n",
      "Epoch: 1400/20000, Loss: 0.0006786719313823\n",
      "Epoch: 1410/20000, Loss: 0.0006669862195849\n",
      "Epoch: 1420/20000, Loss: 0.0006555604632013\n",
      "Epoch: 1430/20000, Loss: 0.0006443851743825\n",
      "Epoch: 1440/20000, Loss: 0.0006334508652799\n",
      "Epoch: 1450/20000, Loss: 0.0006227483390830\n",
      "Epoch: 1460/20000, Loss: 0.0006122681661509\n",
      "Epoch: 1470/20000, Loss: 0.0006020006840117\n",
      "Epoch: 1480/20000, Loss: 0.0005919390241615\n",
      "Epoch: 1490/20000, Loss: 0.0005838176584803\n",
      "Epoch: 1500/20000, Loss: 0.0005725892260671\n",
      "Epoch: 1510/20000, Loss: 0.0005632230895571\n",
      "Epoch: 1520/20000, Loss: 0.0005535485688597\n",
      "Epoch: 1530/20000, Loss: 0.0005443876143545\n",
      "Epoch: 1540/20000, Loss: 0.0005353086744435\n",
      "Epoch: 1550/20000, Loss: 0.0005263686180115\n",
      "Epoch: 1560/20000, Loss: 0.0005175622063689\n",
      "Epoch: 1570/20000, Loss: 0.0005088801844977\n",
      "Epoch: 1580/20000, Loss: 0.0005003303522244\n",
      "Epoch: 1590/20000, Loss: 0.0004919279017486\n",
      "Epoch: 1600/20000, Loss: 0.0004836906737182\n",
      "Epoch: 1610/20000, Loss: 0.0004756313282996\n",
      "Epoch: 1620/20000, Loss: 0.0004677527176682\n",
      "Epoch: 1630/20000, Loss: 0.0004600499814842\n",
      "Epoch: 1640/20000, Loss: 0.0004525152908172\n",
      "Epoch: 1650/20000, Loss: 0.0004451411077753\n",
      "Epoch: 1660/20000, Loss: 0.0004379211459309\n",
      "Epoch: 1670/20000, Loss: 0.0004308499337640\n",
      "Epoch: 1680/20000, Loss: 0.0004239229601808\n",
      "Epoch: 1690/20000, Loss: 0.0004172416229267\n",
      "Epoch: 1700/20000, Loss: 0.0004105666303076\n",
      "Epoch: 1710/20000, Loss: 0.0004043852677569\n",
      "Epoch: 1720/20000, Loss: 0.0003978042805102\n",
      "Epoch: 1730/20000, Loss: 0.0003913601103704\n",
      "Epoch: 1740/20000, Loss: 0.0003852602094412\n",
      "Epoch: 1750/20000, Loss: 0.0003792419738602\n",
      "Epoch: 1760/20000, Loss: 0.0003733499033842\n",
      "Epoch: 1770/20000, Loss: 0.0003675824846141\n",
      "Epoch: 1780/20000, Loss: 0.0003619317722041\n",
      "Epoch: 1790/20000, Loss: 0.0003563941572793\n",
      "Epoch: 1800/20000, Loss: 0.0003509671951178\n",
      "Epoch: 1810/20000, Loss: 0.0003456489357632\n",
      "Epoch: 1820/20000, Loss: 0.0003404369344935\n",
      "Epoch: 1830/20000, Loss: 0.0003353293286636\n",
      "Epoch: 1840/20000, Loss: 0.0003303236153442\n",
      "Epoch: 1850/20000, Loss: 0.0003254179027863\n",
      "Epoch: 1860/20000, Loss: 0.0003206100955140\n",
      "Epoch: 1870/20000, Loss: 0.0003158980980515\n",
      "Epoch: 1880/20000, Loss: 0.0003112799022347\n",
      "Epoch: 1890/20000, Loss: 0.0003067534416914\n",
      "Epoch: 1900/20000, Loss: 0.0003023167955689\n",
      "Epoch: 1910/20000, Loss: 0.0002979786368087\n",
      "Epoch: 1920/20000, Loss: 0.0002965789171867\n",
      "Epoch: 1930/20000, Loss: 0.0002896181540564\n",
      "Epoch: 1940/20000, Loss: 0.0002856423379853\n",
      "Epoch: 1950/20000, Loss: 0.0002815799380187\n",
      "Epoch: 1960/20000, Loss: 0.0002775554021355\n",
      "Epoch: 1970/20000, Loss: 0.0002736666938290\n",
      "Epoch: 1980/20000, Loss: 0.0002698791504372\n",
      "Epoch: 1990/20000, Loss: 0.0002661710605025\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2000/20000, Loss: 0.0002625358174555\n",
      "Epoch: 2010/20000, Loss: 0.0002589712094050\n",
      "Epoch: 2020/20000, Loss: 0.0002554758393671\n",
      "Epoch: 2030/20000, Loss: 0.0002520475827623\n",
      "Epoch: 2040/20000, Loss: 0.0002486848679837\n",
      "Epoch: 2050/20000, Loss: 0.0002453862980474\n",
      "Epoch: 2060/20000, Loss: 0.0002421503741061\n",
      "Epoch: 2070/20000, Loss: 0.0002389757282799\n",
      "Epoch: 2080/20000, Loss: 0.0002358609344810\n",
      "Epoch: 2090/20000, Loss: 0.0002328047121409\n",
      "Epoch: 2100/20000, Loss: 0.0002298057370353\n",
      "Epoch: 2110/20000, Loss: 0.0002268626849400\n",
      "Epoch: 2120/20000, Loss: 0.0002239744062535\n",
      "Epoch: 2130/20000, Loss: 0.0002211436367361\n",
      "Epoch: 2140/20000, Loss: 0.0002196275017923\n",
      "Epoch: 2150/20000, Loss: 0.0002171255910071\n",
      "Epoch: 2160/20000, Loss: 0.0002133469533874\n",
      "Epoch: 2170/20000, Loss: 0.0002103723236360\n",
      "Epoch: 2180/20000, Loss: 0.0002077535609715\n",
      "Epoch: 2190/20000, Loss: 0.0002052225172520\n",
      "Epoch: 2200/20000, Loss: 0.0002027353475569\n",
      "Epoch: 2210/20000, Loss: 0.0002002928667935\n",
      "Epoch: 2220/20000, Loss: 0.0001978946966119\n",
      "Epoch: 2230/20000, Loss: 0.0001955390616786\n",
      "Epoch: 2240/20000, Loss: 0.0001932246814249\n",
      "Epoch: 2250/20000, Loss: 0.0001909512211569\n",
      "Epoch: 2260/20000, Loss: 0.0001887177350000\n",
      "Epoch: 2270/20000, Loss: 0.0001865231897682\n",
      "Epoch: 2280/20000, Loss: 0.0001843667705543\n",
      "Epoch: 2290/20000, Loss: 0.0001822476042435\n",
      "Epoch: 2300/20000, Loss: 0.0001801649341360\n",
      "Epoch: 2310/20000, Loss: 0.0001781179016689\n",
      "Epoch: 2320/20000, Loss: 0.0001761057501426\n",
      "Epoch: 2330/20000, Loss: 0.0001741276646499\n",
      "Epoch: 2340/20000, Loss: 0.0001721829030430\n",
      "Epoch: 2350/20000, Loss: 0.0001702708104858\n",
      "Epoch: 2360/20000, Loss: 0.0001683907903498\n",
      "Epoch: 2370/20000, Loss: 0.0001665780873736\n",
      "Epoch: 2380/20000, Loss: 0.0001690590288490\n",
      "Epoch: 2390/20000, Loss: 0.0001639558904571\n",
      "Epoch: 2400/20000, Loss: 0.0001616322842892\n",
      "Epoch: 2410/20000, Loss: 0.0001595903304406\n",
      "Epoch: 2420/20000, Loss: 0.0001577914081281\n",
      "Epoch: 2430/20000, Loss: 0.0001561030658195\n",
      "Epoch: 2440/20000, Loss: 0.0001544573606225\n",
      "Epoch: 2450/20000, Loss: 0.0001528400171082\n",
      "Epoch: 2460/20000, Loss: 0.0001512484741397\n",
      "Epoch: 2470/20000, Loss: 0.0001496817567386\n",
      "Epoch: 2480/20000, Loss: 0.0001481395302108\n",
      "Epoch: 2490/20000, Loss: 0.0001466216635890\n",
      "Epoch: 2500/20000, Loss: 0.0001451272109989\n",
      "Epoch: 2510/20000, Loss: 0.0001436556485714\n",
      "Epoch: 2520/20000, Loss: 0.0001422066270607\n",
      "Epoch: 2530/20000, Loss: 0.0001407795643900\n",
      "Epoch: 2540/20000, Loss: 0.0001393739803461\n",
      "Epoch: 2550/20000, Loss: 0.0001379895402351\n",
      "Epoch: 2560/20000, Loss: 0.0001366256765323\n",
      "Epoch: 2570/20000, Loss: 0.0001352820108877\n",
      "Epoch: 2580/20000, Loss: 0.0001339580921922\n",
      "Epoch: 2590/20000, Loss: 0.0001326535711996\n",
      "Epoch: 2600/20000, Loss: 0.0001313679531449\n",
      "Epoch: 2610/20000, Loss: 0.0001301011652686\n",
      "Epoch: 2620/20000, Loss: 0.0001288879575441\n",
      "Epoch: 2630/20000, Loss: 0.0001318612339674\n",
      "Epoch: 2640/20000, Loss: 0.0001266760955332\n",
      "Epoch: 2650/20000, Loss: 0.0001253318332601\n",
      "Epoch: 2660/20000, Loss: 0.0001241105783265\n",
      "Epoch: 2670/20000, Loss: 0.0001229148474522\n",
      "Epoch: 2680/20000, Loss: 0.0001217534663738\n",
      "Epoch: 2690/20000, Loss: 0.0001206204178743\n",
      "Epoch: 2700/20000, Loss: 0.0001195085060317\n",
      "Epoch: 2710/20000, Loss: 0.0001184123902931\n",
      "Epoch: 2720/20000, Loss: 0.0001173299242510\n",
      "Epoch: 2730/20000, Loss: 0.0001162621774711\n",
      "Epoch: 2740/20000, Loss: 0.0001152089025709\n",
      "Epoch: 2750/20000, Loss: 0.0001141693865065\n",
      "Epoch: 2760/20000, Loss: 0.0001131435128627\n",
      "Epoch: 2770/20000, Loss: 0.0001121309542214\n",
      "Epoch: 2780/20000, Loss: 0.0001111314923037\n",
      "Epoch: 2790/20000, Loss: 0.0001101447487599\n",
      "Epoch: 2800/20000, Loss: 0.0001091705926228\n",
      "Epoch: 2810/20000, Loss: 0.0001082087837858\n",
      "Epoch: 2820/20000, Loss: 0.0001072590093827\n",
      "Epoch: 2830/20000, Loss: 0.0001063210511347\n",
      "Epoch: 2840/20000, Loss: 0.0001053947053151\n",
      "Epoch: 2850/20000, Loss: 0.0001044799064402\n",
      "Epoch: 2860/20000, Loss: 0.0001035958921420\n",
      "Epoch: 2870/20000, Loss: 0.0001060360955307\n",
      "Epoch: 2880/20000, Loss: 0.0001020960407914\n",
      "Epoch: 2890/20000, Loss: 0.0001010938794934\n",
      "Epoch: 2900/20000, Loss: 0.0001001299897325\n",
      "Epoch: 2910/20000, Loss: 0.0000992548593786\n",
      "Epoch: 2920/20000, Loss: 0.0000984097059700\n",
      "Epoch: 2930/20000, Loss: 0.0000975770744844\n",
      "Epoch: 2940/20000, Loss: 0.0000967537198449\n",
      "Epoch: 2950/20000, Loss: 0.0000959418903221\n",
      "Epoch: 2960/20000, Loss: 0.0000951419497142\n",
      "Epoch: 2970/20000, Loss: 0.0000943509439821\n",
      "Epoch: 2980/20000, Loss: 0.0000935686985031\n",
      "Epoch: 2990/20000, Loss: 0.0000927952569327\n",
      "Epoch: 3000/20000, Loss: 0.0000920303500607\n",
      "Epoch: 3010/20000, Loss: 0.0000912738832994\n",
      "Epoch: 3020/20000, Loss: 0.0000905256820261\n",
      "Epoch: 3030/20000, Loss: 0.0000897856152733\n",
      "Epoch: 3040/20000, Loss: 0.0000890535811777\n",
      "Epoch: 3050/20000, Loss: 0.0000883293760126\n",
      "Epoch: 3060/20000, Loss: 0.0000876129051903\n",
      "Epoch: 3070/20000, Loss: 0.0000869039868121\n",
      "Epoch: 3080/20000, Loss: 0.0000862025335664\n",
      "Epoch: 3090/20000, Loss: 0.0000855084508657\n",
      "Epoch: 3100/20000, Loss: 0.0000848361814860\n",
      "Epoch: 3110/20000, Loss: 0.0000866208356456\n",
      "Epoch: 3120/20000, Loss: 0.0000847523915581\n",
      "Epoch: 3130/20000, Loss: 0.0000833641533973\n",
      "Epoch: 3140/20000, Loss: 0.0000823562149890\n",
      "Epoch: 3150/20000, Loss: 0.0000815754756331\n",
      "Epoch: 3160/20000, Loss: 0.0000808797267382\n",
      "Epoch: 3170/20000, Loss: 0.0000802226713859\n",
      "Epoch: 3180/20000, Loss: 0.0000795879750513\n",
      "Epoch: 3190/20000, Loss: 0.0000789631230873\n",
      "Epoch: 3200/20000, Loss: 0.0000783423602115\n",
      "Epoch: 3210/20000, Loss: 0.0000777280874900\n",
      "Epoch: 3220/20000, Loss: 0.0000771196646383\n",
      "Epoch: 3230/20000, Loss: 0.0000765168879298\n",
      "Epoch: 3240/20000, Loss: 0.0000759196191211\n",
      "Epoch: 3250/20000, Loss: 0.0000753278000047\n",
      "Epoch: 3260/20000, Loss: 0.0000747413359932\n",
      "Epoch: 3270/20000, Loss: 0.0000741601470509\n",
      "Epoch: 3280/20000, Loss: 0.0000735841094865\n",
      "Epoch: 3290/20000, Loss: 0.0000730131869204\n",
      "Epoch: 3300/20000, Loss: 0.0000724473356968\n",
      "Epoch: 3310/20000, Loss: 0.0000718864466762\n",
      "Epoch: 3320/20000, Loss: 0.0000713304616511\n",
      "Epoch: 3330/20000, Loss: 0.0000707793151378\n",
      "Epoch: 3340/20000, Loss: 0.0000702341276337\n",
      "Epoch: 3350/20000, Loss: 0.0000699371812516\n",
      "Epoch: 3360/20000, Loss: 0.0000695379130775\n",
      "Epoch: 3370/20000, Loss: 0.0000691719906172\n",
      "Epoch: 3380/20000, Loss: 0.0000682531535858\n",
      "Epoch: 3390/20000, Loss: 0.0000676179843140\n",
      "Epoch: 3400/20000, Loss: 0.0000670774315950\n",
      "Epoch: 3410/20000, Loss: 0.0000665599218337\n",
      "Epoch: 3420/20000, Loss: 0.0000660498044454\n",
      "Epoch: 3430/20000, Loss: 0.0000655440453556\n",
      "Epoch: 3440/20000, Loss: 0.0000650430956739\n",
      "Epoch: 3450/20000, Loss: 0.0000645478212391\n",
      "Epoch: 3460/20000, Loss: 0.0000640573198325\n",
      "Epoch: 3470/20000, Loss: 0.0000635707983747\n",
      "Epoch: 3480/20000, Loss: 0.0000630885333521\n",
      "Epoch: 3490/20000, Loss: 0.0000626103574177\n",
      "Epoch: 3500/20000, Loss: 0.0000621362851234\n",
      "Epoch: 3510/20000, Loss: 0.0000616662582615\n",
      "Epoch: 3520/20000, Loss: 0.0000612002113485\n",
      "Epoch: 3530/20000, Loss: 0.0000607381371083\n",
      "Epoch: 3540/20000, Loss: 0.0000602799664193\n",
      "Epoch: 3550/20000, Loss: 0.0000598256847297\n",
      "Epoch: 3560/20000, Loss: 0.0000593752338318\n",
      "Epoch: 3570/20000, Loss: 0.0000589285809838\n",
      "Epoch: 3580/20000, Loss: 0.0000584856570640\n",
      "Epoch: 3590/20000, Loss: 0.0000580464402447\n",
      "Epoch: 3600/20000, Loss: 0.0000576112361159\n",
      "Epoch: 3610/20000, Loss: 0.0000572416865907\n",
      "Epoch: 3620/20000, Loss: 0.0000616978577455\n",
      "Epoch: 3630/20000, Loss: 0.0000569813819311\n",
      "Epoch: 3640/20000, Loss: 0.0000561340639251\n",
      "Epoch: 3650/20000, Loss: 0.0000555930055270\n",
      "Epoch: 3660/20000, Loss: 0.0000551176199224\n",
      "Epoch: 3670/20000, Loss: 0.0000546814335394\n",
      "Epoch: 3680/20000, Loss: 0.0000542666530237\n",
      "Epoch: 3690/20000, Loss: 0.0000538626954949\n",
      "Epoch: 3700/20000, Loss: 0.0000534633545612\n",
      "Epoch: 3710/20000, Loss: 0.0000530661855009\n",
      "Epoch: 3720/20000, Loss: 0.0000526721196366\n",
      "Epoch: 3730/20000, Loss: 0.0000522815462318\n",
      "Epoch: 3740/20000, Loss: 0.0000518938941241\n",
      "Epoch: 3750/20000, Loss: 0.0000515093088325\n",
      "Epoch: 3760/20000, Loss: 0.0000511276703037\n",
      "Epoch: 3770/20000, Loss: 0.0000507489858137\n",
      "Epoch: 3780/20000, Loss: 0.0000503731716890\n",
      "Epoch: 3790/20000, Loss: 0.0000500002461195\n",
      "Epoch: 3800/20000, Loss: 0.0000496301472594\n",
      "Epoch: 3810/20000, Loss: 0.0000492628532811\n",
      "Epoch: 3820/20000, Loss: 0.0000488983459945\n",
      "Epoch: 3830/20000, Loss: 0.0000485365926579\n",
      "Epoch: 3840/20000, Loss: 0.0000481775168737\n",
      "Epoch: 3850/20000, Loss: 0.0000478212350572\n",
      "Epoch: 3860/20000, Loss: 0.0000474725056847\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 3870/20000, Loss: 0.0000477613575640\n",
      "Epoch: 3880/20000, Loss: 0.0000469598198833\n",
      "Epoch: 3890/20000, Loss: 0.0000466652381874\n",
      "Epoch: 3900/20000, Loss: 0.0000463050528197\n",
      "Epoch: 3910/20000, Loss: 0.0000458463910036\n",
      "Epoch: 3920/20000, Loss: 0.0000454278451798\n",
      "Epoch: 3930/20000, Loss: 0.0000450725638075\n",
      "Epoch: 3940/20000, Loss: 0.0000447442871518\n",
      "Epoch: 3950/20000, Loss: 0.0000444111028628\n",
      "Epoch: 3960/20000, Loss: 0.0000440833318862\n",
      "Epoch: 3970/20000, Loss: 0.0000437578964920\n",
      "Epoch: 3980/20000, Loss: 0.0000434352259617\n",
      "Epoch: 3990/20000, Loss: 0.0000431147964264\n",
      "Epoch: 4000/20000, Loss: 0.0000427967279393\n",
      "Epoch: 4010/20000, Loss: 0.0000424809804827\n",
      "Epoch: 4020/20000, Loss: 0.0000421675031248\n",
      "Epoch: 4030/20000, Loss: 0.0000418563286075\n",
      "Epoch: 4040/20000, Loss: 0.0000415473623434\n",
      "Epoch: 4050/20000, Loss: 0.0000412406625401\n",
      "Epoch: 4060/20000, Loss: 0.0000409361309721\n",
      "Epoch: 4070/20000, Loss: 0.0000406338440371\n",
      "Epoch: 4080/20000, Loss: 0.0000403339654440\n",
      "Epoch: 4090/20000, Loss: 0.0000400592507503\n",
      "Epoch: 4100/20000, Loss: 0.0000426789920311\n",
      "Epoch: 4110/20000, Loss: 0.0000408809064538\n",
      "Epoch: 4120/20000, Loss: 0.0000397465773858\n",
      "Epoch: 4130/20000, Loss: 0.0000390211898775\n",
      "Epoch: 4140/20000, Loss: 0.0000386010324291\n",
      "Epoch: 4150/20000, Loss: 0.0000383001133741\n",
      "Epoch: 4160/20000, Loss: 0.0000380243291147\n",
      "Epoch: 4170/20000, Loss: 0.0000377389878849\n",
      "Epoch: 4180/20000, Loss: 0.0000374580267817\n",
      "Epoch: 4190/20000, Loss: 0.0000371819660359\n",
      "Epoch: 4200/20000, Loss: 0.0000369070912711\n",
      "Epoch: 4210/20000, Loss: 0.0000366346175724\n",
      "Epoch: 4220/20000, Loss: 0.0000363641047443\n",
      "Epoch: 4230/20000, Loss: 0.0000360955091310\n",
      "Epoch: 4240/20000, Loss: 0.0000358288743882\n",
      "Epoch: 4250/20000, Loss: 0.0000355641568603\n",
      "Epoch: 4260/20000, Loss: 0.0000353013492713\n",
      "Epoch: 4270/20000, Loss: 0.0000350404297933\n",
      "Epoch: 4280/20000, Loss: 0.0000347813947883\n",
      "Epoch: 4290/20000, Loss: 0.0000345242187905\n",
      "Epoch: 4300/20000, Loss: 0.0000342689090758\n",
      "Epoch: 4310/20000, Loss: 0.0000340155456797\n",
      "Epoch: 4320/20000, Loss: 0.0000337715100613\n",
      "Epoch: 4330/20000, Loss: 0.0000345677945006\n",
      "Epoch: 4340/20000, Loss: 0.0000343136853189\n",
      "Epoch: 4350/20000, Loss: 0.0000330246512021\n",
      "Epoch: 4360/20000, Loss: 0.0000328431815433\n",
      "Epoch: 4370/20000, Loss: 0.0000326085573761\n",
      "Epoch: 4380/20000, Loss: 0.0000323340354953\n",
      "Epoch: 4390/20000, Loss: 0.0000320642320730\n",
      "Epoch: 4400/20000, Loss: 0.0000318229940603\n",
      "Epoch: 4410/20000, Loss: 0.0000315891011269\n",
      "Epoch: 4420/20000, Loss: 0.0000313540549541\n",
      "Epoch: 4430/20000, Loss: 0.0000311226940539\n",
      "Epoch: 4440/20000, Loss: 0.0000308925991703\n",
      "Epoch: 4450/20000, Loss: 0.0000306643451040\n",
      "Epoch: 4460/20000, Loss: 0.0000304377954308\n",
      "Epoch: 4470/20000, Loss: 0.0000302128846670\n",
      "Epoch: 4480/20000, Loss: 0.0000299896419165\n",
      "Epoch: 4490/20000, Loss: 0.0000297680453514\n",
      "Epoch: 4500/20000, Loss: 0.0000295480585919\n",
      "Epoch: 4510/20000, Loss: 0.0000293297034659\n",
      "Epoch: 4520/20000, Loss: 0.0000291129526886\n",
      "Epoch: 4530/20000, Loss: 0.0000288977989840\n",
      "Epoch: 4540/20000, Loss: 0.0000286842459900\n",
      "Epoch: 4550/20000, Loss: 0.0000284724119410\n",
      "Epoch: 4560/20000, Loss: 0.0000282829132630\n",
      "Epoch: 4570/20000, Loss: 0.0000316503901558\n",
      "Epoch: 4580/20000, Loss: 0.0000290493117063\n",
      "Epoch: 4590/20000, Loss: 0.0000282145592791\n",
      "Epoch: 4600/20000, Loss: 0.0000276510036201\n",
      "Epoch: 4610/20000, Loss: 0.0000273203604593\n",
      "Epoch: 4620/20000, Loss: 0.0000270704786089\n",
      "Epoch: 4630/20000, Loss: 0.0000268490475719\n",
      "Epoch: 4640/20000, Loss: 0.0000266422885034\n",
      "Epoch: 4650/20000, Loss: 0.0000264448899543\n",
      "Epoch: 4660/20000, Loss: 0.0000262506491708\n",
      "Epoch: 4670/20000, Loss: 0.0000260569777311\n",
      "Epoch: 4680/20000, Loss: 0.0000258651816694\n",
      "Epoch: 4690/20000, Loss: 0.0000256747953244\n",
      "Epoch: 4700/20000, Loss: 0.0000254858969129\n",
      "Epoch: 4710/20000, Loss: 0.0000252983809332\n",
      "Epoch: 4720/20000, Loss: 0.0000251122819463\n",
      "Epoch: 4730/20000, Loss: 0.0000249275944952\n",
      "Epoch: 4740/20000, Loss: 0.0000247442931141\n",
      "Epoch: 4750/20000, Loss: 0.0000245623778028\n",
      "Epoch: 4760/20000, Loss: 0.0000243818485615\n",
      "Epoch: 4770/20000, Loss: 0.0000242026435444\n",
      "Epoch: 4780/20000, Loss: 0.0000240248064074\n",
      "Epoch: 4790/20000, Loss: 0.0000238483189605\n",
      "Epoch: 4800/20000, Loss: 0.0000236731575569\n",
      "Epoch: 4810/20000, Loss: 0.0000234993513004\n",
      "Epoch: 4820/20000, Loss: 0.0000233288337768\n",
      "Epoch: 4830/20000, Loss: 0.0000236399391724\n",
      "Epoch: 4840/20000, Loss: 0.0000230608929996\n",
      "Epoch: 4850/20000, Loss: 0.0000228378758038\n",
      "Epoch: 4860/20000, Loss: 0.0000226643896895\n",
      "Epoch: 4870/20000, Loss: 0.0000225172407227\n",
      "Epoch: 4880/20000, Loss: 0.0000223438710236\n",
      "Epoch: 4890/20000, Loss: 0.0000221693808271\n",
      "Epoch: 4900/20000, Loss: 0.0000220021902351\n",
      "Epoch: 4910/20000, Loss: 0.0000218403583858\n",
      "Epoch: 4920/20000, Loss: 0.0000216813150473\n",
      "Epoch: 4930/20000, Loss: 0.0000215235177166\n",
      "Epoch: 4940/20000, Loss: 0.0000213665734918\n",
      "Epoch: 4950/20000, Loss: 0.0000212109753193\n",
      "Epoch: 4960/20000, Loss: 0.0000210566940950\n",
      "Epoch: 4970/20000, Loss: 0.0000209035533771\n",
      "Epoch: 4980/20000, Loss: 0.0000207516277442\n",
      "Epoch: 4990/20000, Loss: 0.0000206009008252\n",
      "Epoch: 5000/20000, Loss: 0.0000204513235076\n",
      "Epoch: 5010/20000, Loss: 0.0000203029158001\n",
      "Epoch: 5020/20000, Loss: 0.0000201556613320\n",
      "Epoch: 5030/20000, Loss: 0.0000200095819309\n",
      "Epoch: 5040/20000, Loss: 0.0000198646102945\n",
      "Epoch: 5050/20000, Loss: 0.0000197207900783\n",
      "Epoch: 5060/20000, Loss: 0.0000195781012735\n",
      "Epoch: 5070/20000, Loss: 0.0000194365293282\n",
      "Epoch: 5080/20000, Loss: 0.0000192960669665\n",
      "Epoch: 5090/20000, Loss: 0.0000191567560250\n",
      "Epoch: 5100/20000, Loss: 0.0000190219288925\n",
      "Epoch: 5110/20000, Loss: 0.0000194648819161\n",
      "Epoch: 5120/20000, Loss: 0.0000188011908904\n",
      "Epoch: 5130/20000, Loss: 0.0000188651720237\n",
      "Epoch: 5140/20000, Loss: 0.0000186354664038\n",
      "Epoch: 5150/20000, Loss: 0.0000184279706446\n",
      "Epoch: 5160/20000, Loss: 0.0000182585135917\n",
      "Epoch: 5170/20000, Loss: 0.0000181036739377\n",
      "Epoch: 5180/20000, Loss: 0.0000179598246177\n",
      "Epoch: 5190/20000, Loss: 0.0000178278587555\n",
      "Epoch: 5200/20000, Loss: 0.0000177011806954\n",
      "Epoch: 5210/20000, Loss: 0.0000175742570718\n",
      "Epoch: 5220/20000, Loss: 0.0000174488195626\n",
      "Epoch: 5230/20000, Loss: 0.0000173243861354\n",
      "Epoch: 5240/20000, Loss: 0.0000172009931703\n",
      "Epoch: 5250/20000, Loss: 0.0000170785660885\n",
      "Epoch: 5260/20000, Loss: 0.0000169571139850\n",
      "Epoch: 5270/20000, Loss: 0.0000168366241269\n",
      "Epoch: 5280/20000, Loss: 0.0000167171056091\n",
      "Epoch: 5290/20000, Loss: 0.0000165985147760\n",
      "Epoch: 5300/20000, Loss: 0.0000164808770933\n",
      "Epoch: 5310/20000, Loss: 0.0000163641543622\n",
      "Epoch: 5320/20000, Loss: 0.0000162483665918\n",
      "Epoch: 5330/20000, Loss: 0.0000161334992299\n",
      "Epoch: 5340/20000, Loss: 0.0000160195922945\n",
      "Epoch: 5350/20000, Loss: 0.0000159095798153\n",
      "Epoch: 5360/20000, Loss: 0.0000161221923918\n",
      "Epoch: 5370/20000, Loss: 0.0000168626356754\n",
      "Epoch: 5380/20000, Loss: 0.0000166668214661\n",
      "Epoch: 5390/20000, Loss: 0.0000156503047037\n",
      "Epoch: 5400/20000, Loss: 0.0000153600831254\n",
      "Epoch: 5410/20000, Loss: 0.0000152696375153\n",
      "Epoch: 5420/20000, Loss: 0.0000151623698912\n",
      "Epoch: 5430/20000, Loss: 0.0000150390142153\n",
      "Epoch: 5440/20000, Loss: 0.0000149351089931\n",
      "Epoch: 5450/20000, Loss: 0.0000148293911479\n",
      "Epoch: 5460/20000, Loss: 0.0000147262544488\n",
      "Epoch: 5470/20000, Loss: 0.0000146235142893\n",
      "Epoch: 5480/20000, Loss: 0.0000145218755279\n",
      "Epoch: 5490/20000, Loss: 0.0000144210744111\n",
      "Epoch: 5500/20000, Loss: 0.0000143210509123\n",
      "Epoch: 5510/20000, Loss: 0.0000142218314068\n",
      "Epoch: 5520/20000, Loss: 0.0000141234040711\n",
      "Epoch: 5530/20000, Loss: 0.0000140257479870\n",
      "Epoch: 5540/20000, Loss: 0.0000139288640639\n",
      "Epoch: 5550/20000, Loss: 0.0000138327541208\n",
      "Epoch: 5560/20000, Loss: 0.0000137374181577\n",
      "Epoch: 5570/20000, Loss: 0.0000136428770929\n",
      "Epoch: 5580/20000, Loss: 0.0000135520876938\n",
      "Epoch: 5590/20000, Loss: 0.0000138825535032\n",
      "Epoch: 5600/20000, Loss: 0.0000136876296892\n",
      "Epoch: 5610/20000, Loss: 0.0000142624076034\n",
      "Epoch: 5620/20000, Loss: 0.0000136007702167\n",
      "Epoch: 5630/20000, Loss: 0.0000132304921863\n",
      "Epoch: 5640/20000, Loss: 0.0000130317821458\n",
      "Epoch: 5650/20000, Loss: 0.0000129171548906\n",
      "Epoch: 5660/20000, Loss: 0.0000128325145852\n",
      "Epoch: 5670/20000, Loss: 0.0000127445100588\n",
      "Epoch: 5680/20000, Loss: 0.0000126557361000\n",
      "Epoch: 5690/20000, Loss: 0.0000125703900267\n",
      "Epoch: 5700/20000, Loss: 0.0000124850430439\n",
      "Epoch: 5710/20000, Loss: 0.0000124007228806\n",
      "Epoch: 5720/20000, Loss: 0.0000123170329971\n",
      "Epoch: 5730/20000, Loss: 0.0000122340125017\n",
      "Epoch: 5740/20000, Loss: 0.0000121516386571\n",
      "Epoch: 5750/20000, Loss: 0.0000120699278341\n",
      "Epoch: 5760/20000, Loss: 0.0000119888509289\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 5770/20000, Loss: 0.0000119084070320\n",
      "Epoch: 5780/20000, Loss: 0.0000118286006909\n",
      "Epoch: 5790/20000, Loss: 0.0000117494128062\n",
      "Epoch: 5800/20000, Loss: 0.0000116708488349\n",
      "Epoch: 5810/20000, Loss: 0.0000115928869491\n",
      "Epoch: 5820/20000, Loss: 0.0000115155553431\n",
      "Epoch: 5830/20000, Loss: 0.0000114394915727\n",
      "Epoch: 5840/20000, Loss: 0.0000115019802251\n",
      "Epoch: 5850/20000, Loss: 0.0000162979140441\n",
      "Epoch: 5860/20000, Loss: 0.0000130300959427\n",
      "Epoch: 5870/20000, Loss: 0.0000117812851386\n",
      "Epoch: 5880/20000, Loss: 0.0000112812886073\n",
      "Epoch: 5890/20000, Loss: 0.0000110642431537\n",
      "Epoch: 5900/20000, Loss: 0.0000109478514787\n",
      "Epoch: 5910/20000, Loss: 0.0000108612866825\n",
      "Epoch: 5920/20000, Loss: 0.0000107838295662\n",
      "Epoch: 5930/20000, Loss: 0.0000107103060145\n",
      "Epoch: 5940/20000, Loss: 0.0000106393972601\n",
      "Epoch: 5950/20000, Loss: 0.0000105699109554\n",
      "Epoch: 5960/20000, Loss: 0.0000105008621176\n",
      "Epoch: 5970/20000, Loss: 0.0000104323244159\n",
      "Epoch: 5980/20000, Loss: 0.0000103643724287\n",
      "Epoch: 5990/20000, Loss: 0.0000102969343061\n",
      "Epoch: 6000/20000, Loss: 0.0000102300064100\n",
      "Epoch: 6010/20000, Loss: 0.0000101635987448\n",
      "Epoch: 6020/20000, Loss: 0.0000100976994872\n",
      "Epoch: 6030/20000, Loss: 0.0000100323040897\n",
      "Epoch: 6040/20000, Loss: 0.0000099674016383\n",
      "Epoch: 6050/20000, Loss: 0.0000099029966805\n",
      "Epoch: 6060/20000, Loss: 0.0000098390764833\n",
      "Epoch: 6070/20000, Loss: 0.0000097756437754\n",
      "Epoch: 6080/20000, Loss: 0.0000097126830951\n",
      "Epoch: 6090/20000, Loss: 0.0000096502117231\n",
      "Epoch: 6100/20000, Loss: 0.0000095882114692\n",
      "Epoch: 6110/20000, Loss: 0.0000095268960649\n",
      "Epoch: 6120/20000, Loss: 0.0000094953111329\n",
      "Epoch: 6130/20000, Loss: 0.0000139376106745\n",
      "Epoch: 6140/20000, Loss: 0.0000104904120235\n",
      "Epoch: 6150/20000, Loss: 0.0000099109593066\n",
      "Epoch: 6160/20000, Loss: 0.0000094751485449\n",
      "Epoch: 6170/20000, Loss: 0.0000092698955996\n",
      "Epoch: 6180/20000, Loss: 0.0000091500114650\n",
      "Epoch: 6190/20000, Loss: 0.0000090643952717\n",
      "Epoch: 6200/20000, Loss: 0.0000089984923761\n",
      "Epoch: 6210/20000, Loss: 0.0000089420282166\n",
      "Epoch: 6220/20000, Loss: 0.0000088856531875\n",
      "Epoch: 6230/20000, Loss: 0.0000088291044449\n",
      "Epoch: 6240/20000, Loss: 0.0000087736580099\n",
      "Epoch: 6250/20000, Loss: 0.0000087184662334\n",
      "Epoch: 6260/20000, Loss: 0.0000086637683125\n",
      "Epoch: 6270/20000, Loss: 0.0000086094623839\n",
      "Epoch: 6280/20000, Loss: 0.0000085555593614\n",
      "Epoch: 6290/20000, Loss: 0.0000085020537881\n",
      "Epoch: 6300/20000, Loss: 0.0000084489320216\n",
      "Epoch: 6310/20000, Loss: 0.0000083962131612\n",
      "Epoch: 6320/20000, Loss: 0.0000083438681031\n",
      "Epoch: 6330/20000, Loss: 0.0000082919086708\n",
      "Epoch: 6340/20000, Loss: 0.0000082403230408\n",
      "Epoch: 6350/20000, Loss: 0.0000081891203081\n",
      "Epoch: 6360/20000, Loss: 0.0000081383541328\n",
      "Epoch: 6370/20000, Loss: 0.0000080909867393\n",
      "Epoch: 6380/20000, Loss: 0.0000083412187450\n",
      "Epoch: 6390/20000, Loss: 0.0000101538234958\n",
      "Epoch: 6400/20000, Loss: 0.0000089213945103\n",
      "Epoch: 6410/20000, Loss: 0.0000079397741501\n",
      "Epoch: 6420/20000, Loss: 0.0000078688308349\n",
      "Epoch: 6430/20000, Loss: 0.0000078487046267\n",
      "Epoch: 6440/20000, Loss: 0.0000077591757872\n",
      "Epoch: 6450/20000, Loss: 0.0000077025451901\n",
      "Epoch: 6460/20000, Loss: 0.0000076563219409\n",
      "Epoch: 6470/20000, Loss: 0.0000076075125435\n",
      "Epoch: 6480/20000, Loss: 0.0000075609968917\n",
      "Epoch: 6490/20000, Loss: 0.0000075149791883\n",
      "Epoch: 6500/20000, Loss: 0.0000074691783993\n",
      "Epoch: 6510/20000, Loss: 0.0000074237627814\n",
      "Epoch: 6520/20000, Loss: 0.0000073787018664\n",
      "Epoch: 6530/20000, Loss: 0.0000073339679147\n",
      "Epoch: 6540/20000, Loss: 0.0000072895441008\n",
      "Epoch: 6550/20000, Loss: 0.0000072454449764\n",
      "Epoch: 6560/20000, Loss: 0.0000072016455306\n",
      "Epoch: 6570/20000, Loss: 0.0000071581475822\n",
      "Epoch: 6580/20000, Loss: 0.0000071149806899\n",
      "Epoch: 6590/20000, Loss: 0.0000070721703196\n",
      "Epoch: 6600/20000, Loss: 0.0000070356609285\n",
      "Epoch: 6610/20000, Loss: 0.0000079797955550\n",
      "Epoch: 6620/20000, Loss: 0.0000076440537669\n",
      "Epoch: 6630/20000, Loss: 0.0000069417774284\n",
      "Epoch: 6640/20000, Loss: 0.0000069364823503\n",
      "Epoch: 6650/20000, Loss: 0.0000068855924837\n",
      "Epoch: 6660/20000, Loss: 0.0000068268586801\n",
      "Epoch: 6670/20000, Loss: 0.0000067633613980\n",
      "Epoch: 6680/20000, Loss: 0.0000067070936893\n",
      "Epoch: 6690/20000, Loss: 0.0000066646853156\n",
      "Epoch: 6700/20000, Loss: 0.0000066260154199\n",
      "Epoch: 6710/20000, Loss: 0.0000065860031100\n",
      "Epoch: 6720/20000, Loss: 0.0000065472390816\n",
      "Epoch: 6730/20000, Loss: 0.0000065085368988\n",
      "Epoch: 6740/20000, Loss: 0.0000064702467171\n",
      "Epoch: 6750/20000, Loss: 0.0000064321966420\n",
      "Epoch: 6760/20000, Loss: 0.0000063944085014\n",
      "Epoch: 6770/20000, Loss: 0.0000063568963924\n",
      "Epoch: 6780/20000, Loss: 0.0000063196434894\n",
      "Epoch: 6790/20000, Loss: 0.0000062826466092\n",
      "Epoch: 6800/20000, Loss: 0.0000062459066612\n",
      "Epoch: 6810/20000, Loss: 0.0000062094250097\n",
      "Epoch: 6820/20000, Loss: 0.0000061731957430\n",
      "Epoch: 6830/20000, Loss: 0.0000061372170421\n",
      "Epoch: 6840/20000, Loss: 0.0000061014839048\n",
      "Epoch: 6850/20000, Loss: 0.0000060662641772\n",
      "Epoch: 6860/20000, Loss: 0.0000060624324760\n",
      "Epoch: 6870/20000, Loss: 0.0000109382262963\n",
      "Epoch: 6880/20000, Loss: 0.0000071824883889\n",
      "Epoch: 6890/20000, Loss: 0.0000065865574470\n",
      "Epoch: 6900/20000, Loss: 0.0000061528630795\n",
      "Epoch: 6910/20000, Loss: 0.0000059661392697\n",
      "Epoch: 6920/20000, Loss: 0.0000058691130107\n",
      "Epoch: 6930/20000, Loss: 0.0000058064060795\n",
      "Epoch: 6940/20000, Loss: 0.0000057630518313\n",
      "Epoch: 6950/20000, Loss: 0.0000057298957472\n",
      "Epoch: 6960/20000, Loss: 0.0000056975809457\n",
      "Epoch: 6970/20000, Loss: 0.0000056645244513\n",
      "Epoch: 6980/20000, Loss: 0.0000056324379329\n",
      "Epoch: 6990/20000, Loss: 0.0000056004319049\n",
      "Epoch: 7000/20000, Loss: 0.0000055687482927\n",
      "Epoch: 7010/20000, Loss: 0.0000055372547649\n",
      "Epoch: 7020/20000, Loss: 0.0000055059945225\n",
      "Epoch: 7030/20000, Loss: 0.0000054749434639\n",
      "Epoch: 7040/20000, Loss: 0.0000054441188695\n",
      "Epoch: 7050/20000, Loss: 0.0000054135016399\n",
      "Epoch: 7060/20000, Loss: 0.0000053830972320\n",
      "Epoch: 7070/20000, Loss: 0.0000053529010984\n",
      "Epoch: 7080/20000, Loss: 0.0000053229141486\n",
      "Epoch: 7090/20000, Loss: 0.0000052931395658\n",
      "Epoch: 7100/20000, Loss: 0.0000052635668908\n",
      "Epoch: 7110/20000, Loss: 0.0000052342052186\n",
      "Epoch: 7120/20000, Loss: 0.0000052052268984\n",
      "Epoch: 7130/20000, Loss: 0.0000052073719417\n",
      "Epoch: 7140/20000, Loss: 0.0000111952749648\n",
      "Epoch: 7150/20000, Loss: 0.0000055451969274\n",
      "Epoch: 7160/20000, Loss: 0.0000052227132983\n",
      "Epoch: 7170/20000, Loss: 0.0000050737480706\n",
      "Epoch: 7180/20000, Loss: 0.0000050386552175\n",
      "Epoch: 7190/20000, Loss: 0.0000050110656957\n",
      "Epoch: 7200/20000, Loss: 0.0000049836376093\n",
      "Epoch: 7210/20000, Loss: 0.0000049571585805\n",
      "Epoch: 7220/20000, Loss: 0.0000049305931498\n",
      "Epoch: 7230/20000, Loss: 0.0000049033492360\n",
      "Epoch: 7240/20000, Loss: 0.0000048761289690\n",
      "Epoch: 7250/20000, Loss: 0.0000048496112868\n",
      "Epoch: 7260/20000, Loss: 0.0000048234096539\n",
      "Epoch: 7270/20000, Loss: 0.0000047973348956\n",
      "Epoch: 7280/20000, Loss: 0.0000047714775064\n",
      "Epoch: 7290/20000, Loss: 0.0000047457861001\n",
      "Epoch: 7300/20000, Loss: 0.0000047202875066\n",
      "Epoch: 7310/20000, Loss: 0.0000046949508032\n",
      "Epoch: 7320/20000, Loss: 0.0000046697923608\n",
      "Epoch: 7330/20000, Loss: 0.0000046448049034\n",
      "Epoch: 7340/20000, Loss: 0.0000046199866119\n",
      "Epoch: 7350/20000, Loss: 0.0000045953383960\n",
      "Epoch: 7360/20000, Loss: 0.0000045708643484\n",
      "Epoch: 7370/20000, Loss: 0.0000045465508265\n",
      "Epoch: 7380/20000, Loss: 0.0000045224101086\n",
      "Epoch: 7390/20000, Loss: 0.0000044984271881\n",
      "Epoch: 7400/20000, Loss: 0.0000044746884669\n",
      "Epoch: 7410/20000, Loss: 0.0000044565963435\n",
      "Epoch: 7420/20000, Loss: 0.0000052239906836\n",
      "Epoch: 7430/20000, Loss: 0.0000044596272346\n",
      "Epoch: 7440/20000, Loss: 0.0000048968190640\n",
      "Epoch: 7450/20000, Loss: 0.0000047117223403\n",
      "Epoch: 7460/20000, Loss: 0.0000044993680604\n",
      "Epoch: 7470/20000, Loss: 0.0000043638610805\n",
      "Epoch: 7480/20000, Loss: 0.0000042969031711\n",
      "Epoch: 7490/20000, Loss: 0.0000042725696403\n",
      "Epoch: 7500/20000, Loss: 0.0000042516930989\n",
      "Epoch: 7510/20000, Loss: 0.0000042270194172\n",
      "Epoch: 7520/20000, Loss: 0.0000042054930418\n",
      "Epoch: 7530/20000, Loss: 0.0000041835060074\n",
      "Epoch: 7540/20000, Loss: 0.0000041620482989\n",
      "Epoch: 7550/20000, Loss: 0.0000041406569835\n",
      "Epoch: 7560/20000, Loss: 0.0000041194289224\n",
      "Epoch: 7570/20000, Loss: 0.0000040983500185\n",
      "Epoch: 7580/20000, Loss: 0.0000040774170884\n",
      "Epoch: 7590/20000, Loss: 0.0000040566128519\n",
      "Epoch: 7600/20000, Loss: 0.0000040359495870\n",
      "Epoch: 7610/20000, Loss: 0.0000040154218368\n",
      "Epoch: 7620/20000, Loss: 0.0000039950291466\n",
      "Epoch: 7630/20000, Loss: 0.0000039747606024\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7640/20000, Loss: 0.0000039546362132\n",
      "Epoch: 7650/20000, Loss: 0.0000039347992242\n",
      "Epoch: 7660/20000, Loss: 0.0000039273409129\n",
      "Epoch: 7670/20000, Loss: 0.0000055933273870\n",
      "Epoch: 7680/20000, Loss: 0.0000056988828874\n",
      "Epoch: 7690/20000, Loss: 0.0000038663611122\n",
      "Epoch: 7700/20000, Loss: 0.0000038961975406\n",
      "Epoch: 7710/20000, Loss: 0.0000039054862100\n",
      "Epoch: 7720/20000, Loss: 0.0000038509583646\n",
      "Epoch: 7730/20000, Loss: 0.0000037906274883\n",
      "Epoch: 7740/20000, Loss: 0.0000037640932078\n",
      "Epoch: 7750/20000, Loss: 0.0000037473221255\n",
      "Epoch: 7760/20000, Loss: 0.0000037264762796\n",
      "Epoch: 7770/20000, Loss: 0.0000037083857478\n",
      "Epoch: 7780/20000, Loss: 0.0000036898063627\n",
      "Epoch: 7790/20000, Loss: 0.0000036716689920\n",
      "Epoch: 7800/20000, Loss: 0.0000036536275729\n",
      "Epoch: 7810/20000, Loss: 0.0000036356905184\n",
      "Epoch: 7820/20000, Loss: 0.0000036178701066\n",
      "Epoch: 7830/20000, Loss: 0.0000036001595163\n",
      "Epoch: 7840/20000, Loss: 0.0000035825532905\n",
      "Epoch: 7850/20000, Loss: 0.0000035650678001\n",
      "Epoch: 7860/20000, Loss: 0.0000035476771245\n",
      "Epoch: 7870/20000, Loss: 0.0000035303969526\n",
      "Epoch: 7880/20000, Loss: 0.0000035132179619\n",
      "Epoch: 7890/20000, Loss: 0.0000034961692563\n",
      "Epoch: 7900/20000, Loss: 0.0000034803729250\n",
      "Epoch: 7910/20000, Loss: 0.0000035984749047\n",
      "Epoch: 7920/20000, Loss: 0.0000100014894997\n",
      "Epoch: 7930/20000, Loss: 0.0000037247384626\n",
      "Epoch: 7940/20000, Loss: 0.0000034209863315\n",
      "Epoch: 7950/20000, Loss: 0.0000034514494018\n",
      "Epoch: 7960/20000, Loss: 0.0000034428294384\n",
      "Epoch: 7970/20000, Loss: 0.0000033973931295\n",
      "Epoch: 7980/20000, Loss: 0.0000033541994071\n",
      "Epoch: 7990/20000, Loss: 0.0000033346618693\n",
      "Epoch: 8000/20000, Loss: 0.0000033196815821\n",
      "Epoch: 8010/20000, Loss: 0.0000033023945889\n",
      "Epoch: 8020/20000, Loss: 0.0000032869072584\n",
      "Epoch: 8030/20000, Loss: 0.0000032711147924\n",
      "Epoch: 8040/20000, Loss: 0.0000032556074530\n",
      "Epoch: 8050/20000, Loss: 0.0000032401871977\n",
      "Epoch: 8060/20000, Loss: 0.0000032248435673\n",
      "Epoch: 8070/20000, Loss: 0.0000032095920233\n",
      "Epoch: 8080/20000, Loss: 0.0000031944243801\n",
      "Epoch: 8090/20000, Loss: 0.0000031793431390\n",
      "Epoch: 8100/20000, Loss: 0.0000031643437524\n",
      "Epoch: 8110/20000, Loss: 0.0000031494262203\n",
      "Epoch: 8120/20000, Loss: 0.0000031345946354\n",
      "Epoch: 8130/20000, Loss: 0.0000031198376291\n",
      "Epoch: 8140/20000, Loss: 0.0000031052204577\n",
      "Epoch: 8150/20000, Loss: 0.0000030935245832\n",
      "Epoch: 8160/20000, Loss: 0.0000033976259601\n",
      "Epoch: 8170/20000, Loss: 0.0000060508837123\n",
      "Epoch: 8180/20000, Loss: 0.0000043409136197\n",
      "Epoch: 8190/20000, Loss: 0.0000031689874049\n",
      "Epoch: 8200/20000, Loss: 0.0000030224100556\n",
      "Epoch: 8210/20000, Loss: 0.0000030421160773\n",
      "Epoch: 8220/20000, Loss: 0.0000030188855362\n",
      "Epoch: 8230/20000, Loss: 0.0000029809355055\n",
      "Epoch: 8240/20000, Loss: 0.0000029674192774\n",
      "Epoch: 8250/20000, Loss: 0.0000029524355796\n",
      "Epoch: 8260/20000, Loss: 0.0000029383882065\n",
      "Epoch: 8270/20000, Loss: 0.0000029245316000\n",
      "Epoch: 8280/20000, Loss: 0.0000029110528885\n",
      "Epoch: 8290/20000, Loss: 0.0000028975689474\n",
      "Epoch: 8300/20000, Loss: 0.0000028841702715\n",
      "Epoch: 8310/20000, Loss: 0.0000028708489026\n",
      "Epoch: 8320/20000, Loss: 0.0000028576012028\n",
      "Epoch: 8330/20000, Loss: 0.0000028444101190\n",
      "Epoch: 8340/20000, Loss: 0.0000028312861104\n",
      "Epoch: 8350/20000, Loss: 0.0000028182271308\n",
      "Epoch: 8360/20000, Loss: 0.0000028052324978\n",
      "Epoch: 8370/20000, Loss: 0.0000027923001653\n",
      "Epoch: 8380/20000, Loss: 0.0000027794667403\n",
      "Epoch: 8390/20000, Loss: 0.0000027687783586\n",
      "Epoch: 8400/20000, Loss: 0.0000030001426694\n",
      "Epoch: 8410/20000, Loss: 0.0000072954380812\n",
      "Epoch: 8420/20000, Loss: 0.0000038481866795\n",
      "Epoch: 8430/20000, Loss: 0.0000028065210245\n",
      "Epoch: 8440/20000, Loss: 0.0000027081764529\n",
      "Epoch: 8450/20000, Loss: 0.0000027256182875\n",
      "Epoch: 8460/20000, Loss: 0.0000027093890367\n",
      "Epoch: 8470/20000, Loss: 0.0000026738441647\n",
      "Epoch: 8480/20000, Loss: 0.0000026573773084\n",
      "Epoch: 8490/20000, Loss: 0.0000026460397748\n",
      "Epoch: 8500/20000, Loss: 0.0000026326663374\n",
      "Epoch: 8510/20000, Loss: 0.0000026208169857\n",
      "Epoch: 8520/20000, Loss: 0.0000026087484457\n",
      "Epoch: 8530/20000, Loss: 0.0000025968117825\n",
      "Epoch: 8540/20000, Loss: 0.0000025849817575\n",
      "Epoch: 8550/20000, Loss: 0.0000025731951609\n",
      "Epoch: 8560/20000, Loss: 0.0000025614608603\n",
      "Epoch: 8570/20000, Loss: 0.0000025497697607\n",
      "Epoch: 8580/20000, Loss: 0.0000025381377782\n",
      "Epoch: 8590/20000, Loss: 0.0000025265560453\n",
      "Epoch: 8600/20000, Loss: 0.0000025150191050\n",
      "Epoch: 8610/20000, Loss: 0.0000025035371891\n",
      "Epoch: 8620/20000, Loss: 0.0000024920966553\n",
      "Epoch: 8630/20000, Loss: 0.0000024807532100\n",
      "Epoch: 8640/20000, Loss: 0.0000024723203751\n",
      "Epoch: 8650/20000, Loss: 0.0000028757424388\n",
      "Epoch: 8660/20000, Loss: 0.0000040372601688\n",
      "Epoch: 8670/20000, Loss: 0.0000041114658416\n",
      "Epoch: 8680/20000, Loss: 0.0000029965895010\n",
      "Epoch: 8690/20000, Loss: 0.0000025771314540\n",
      "Epoch: 8700/20000, Loss: 0.0000024320750072\n",
      "Epoch: 8710/20000, Loss: 0.0000023941261134\n",
      "Epoch: 8720/20000, Loss: 0.0000023872205475\n",
      "Epoch: 8730/20000, Loss: 0.0000023758623229\n",
      "Epoch: 8740/20000, Loss: 0.0000023616617000\n",
      "Epoch: 8750/20000, Loss: 0.0000023511252039\n",
      "Epoch: 8760/20000, Loss: 0.0000023401603357\n",
      "Epoch: 8770/20000, Loss: 0.0000023295324354\n",
      "Epoch: 8780/20000, Loss: 0.0000023188822524\n",
      "Epoch: 8790/20000, Loss: 0.0000023083434826\n",
      "Epoch: 8800/20000, Loss: 0.0000022978385914\n",
      "Epoch: 8810/20000, Loss: 0.0000022873759917\n",
      "Epoch: 8820/20000, Loss: 0.0000022769529551\n",
      "Epoch: 8830/20000, Loss: 0.0000022665763026\n",
      "Epoch: 8840/20000, Loss: 0.0000022562378490\n",
      "Epoch: 8850/20000, Loss: 0.0000022459300908\n",
      "Epoch: 8860/20000, Loss: 0.0000022356657610\n",
      "Epoch: 8870/20000, Loss: 0.0000022254455416\n",
      "Epoch: 8880/20000, Loss: 0.0000022152651127\n",
      "Epoch: 8890/20000, Loss: 0.0000022051183350\n",
      "Epoch: 8900/20000, Loss: 0.0000021951182134\n",
      "Epoch: 8910/20000, Loss: 0.0000022002532205\n",
      "Epoch: 8920/20000, Loss: 0.0000056444682741\n",
      "Epoch: 8930/20000, Loss: 0.0000060333695728\n",
      "Epoch: 8940/20000, Loss: 0.0000034805711948\n",
      "Epoch: 8950/20000, Loss: 0.0000025908775569\n",
      "Epoch: 8960/20000, Loss: 0.0000022829833597\n",
      "Epoch: 8970/20000, Loss: 0.0000021793794076\n",
      "Epoch: 8980/20000, Loss: 0.0000021386069875\n",
      "Epoch: 8990/20000, Loss: 0.0000021165903945\n",
      "Epoch: 9000/20000, Loss: 0.0000021014027425\n",
      "Epoch: 9010/20000, Loss: 0.0000020898880848\n",
      "Epoch: 9020/20000, Loss: 0.0000020802683594\n",
      "Epoch: 9030/20000, Loss: 0.0000020708464490\n",
      "Epoch: 9040/20000, Loss: 0.0000020612735625\n",
      "Epoch: 9050/20000, Loss: 0.0000020518612018\n",
      "Epoch: 9060/20000, Loss: 0.0000020424733975\n",
      "Epoch: 9070/20000, Loss: 0.0000020331335691\n",
      "Epoch: 9080/20000, Loss: 0.0000020238262550\n",
      "Epoch: 9090/20000, Loss: 0.0000020145573671\n",
      "Epoch: 9100/20000, Loss: 0.0000020053175831\n",
      "Epoch: 9110/20000, Loss: 0.0000019961203179\n",
      "Epoch: 9120/20000, Loss: 0.0000019869448806\n",
      "Epoch: 9130/20000, Loss: 0.0000019778156002\n",
      "Epoch: 9140/20000, Loss: 0.0000019687115582\n",
      "Epoch: 9150/20000, Loss: 0.0000019596482161\n",
      "Epoch: 9160/20000, Loss: 0.0000019506117042\n",
      "Epoch: 9170/20000, Loss: 0.0000019416133910\n",
      "Epoch: 9180/20000, Loss: 0.0000019326466827\n",
      "Epoch: 9190/20000, Loss: 0.0000019237420474\n",
      "Epoch: 9200/20000, Loss: 0.0000019176836759\n",
      "Epoch: 9210/20000, Loss: 0.0000024219004899\n",
      "Epoch: 9220/20000, Loss: 0.0000024817159101\n",
      "Epoch: 9230/20000, Loss: 0.0000030788580716\n",
      "Epoch: 9240/20000, Loss: 0.0000023441166377\n",
      "Epoch: 9250/20000, Loss: 0.0000020469135507\n",
      "Epoch: 9260/20000, Loss: 0.0000019365043045\n",
      "Epoch: 9270/20000, Loss: 0.0000018857115265\n",
      "Epoch: 9280/20000, Loss: 0.0000018567375264\n",
      "Epoch: 9290/20000, Loss: 0.0000018400925228\n",
      "Epoch: 9300/20000, Loss: 0.0000018307584924\n",
      "Epoch: 9310/20000, Loss: 0.0000018226836573\n",
      "Epoch: 9320/20000, Loss: 0.0000018138625819\n",
      "Epoch: 9330/20000, Loss: 0.0000018054865905\n",
      "Epoch: 9340/20000, Loss: 0.0000017971384523\n",
      "Epoch: 9350/20000, Loss: 0.0000017888420416\n",
      "Epoch: 9360/20000, Loss: 0.0000017805770085\n",
      "Epoch: 9370/20000, Loss: 0.0000017723483552\n",
      "Epoch: 9380/20000, Loss: 0.0000017641524437\n",
      "Epoch: 9390/20000, Loss: 0.0000017559879097\n",
      "Epoch: 9400/20000, Loss: 0.0000017478494101\n",
      "Epoch: 9410/20000, Loss: 0.0000017397464944\n",
      "Epoch: 9420/20000, Loss: 0.0000017316740468\n",
      "Epoch: 9430/20000, Loss: 0.0000017236372969\n",
      "Epoch: 9440/20000, Loss: 0.0000017156238528\n",
      "Epoch: 9450/20000, Loss: 0.0000017076400809\n",
      "Epoch: 9460/20000, Loss: 0.0000016996903014\n",
      "Epoch: 9470/20000, Loss: 0.0000016917728090\n",
      "Epoch: 9480/20000, Loss: 0.0000016838877173\n",
      "Epoch: 9490/20000, Loss: 0.0000016779765701\n",
      "Epoch: 9500/20000, Loss: 0.0000023122213406\n",
      "Epoch: 9510/20000, Loss: 0.0000017755239696\n",
      "Epoch: 9520/20000, Loss: 0.0000017248938775\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9530/20000, Loss: 0.0000020262889393\n",
      "Epoch: 9540/20000, Loss: 0.0000019103738396\n",
      "Epoch: 9550/20000, Loss: 0.0000017149212681\n",
      "Epoch: 9560/20000, Loss: 0.0000016403540712\n",
      "Epoch: 9570/20000, Loss: 0.0000016197495825\n",
      "Epoch: 9580/20000, Loss: 0.0000016104289671\n",
      "Epoch: 9590/20000, Loss: 0.0000016027431684\n",
      "Epoch: 9600/20000, Loss: 0.0000015953029333\n",
      "Epoch: 9610/20000, Loss: 0.0000015879043076\n",
      "Epoch: 9620/20000, Loss: 0.0000015805079556\n",
      "Epoch: 9630/20000, Loss: 0.0000015731392295\n",
      "Epoch: 9640/20000, Loss: 0.0000015658374650\n",
      "Epoch: 9650/20000, Loss: 0.0000015585891333\n",
      "Epoch: 9660/20000, Loss: 0.0000015513697917\n",
      "Epoch: 9670/20000, Loss: 0.0000015441748928\n",
      "Epoch: 9680/20000, Loss: 0.0000015370095525\n",
      "Epoch: 9690/20000, Loss: 0.0000015298739982\n",
      "Epoch: 9700/20000, Loss: 0.0000015227705035\n",
      "Epoch: 9710/20000, Loss: 0.0000015156887230\n",
      "Epoch: 9720/20000, Loss: 0.0000015086388885\n",
      "Epoch: 9730/20000, Loss: 0.0000015016156567\n",
      "Epoch: 9740/20000, Loss: 0.0000014946243709\n",
      "Epoch: 9750/20000, Loss: 0.0000014876592331\n",
      "Epoch: 9760/20000, Loss: 0.0000014807231992\n",
      "Epoch: 9770/20000, Loss: 0.0000014738135405\n",
      "Epoch: 9780/20000, Loss: 0.0000014669321899\n",
      "Epoch: 9790/20000, Loss: 0.0000014600744862\n",
      "Epoch: 9800/20000, Loss: 0.0000014532524801\n",
      "Epoch: 9810/20000, Loss: 0.0000014465274489\n",
      "Epoch: 9820/20000, Loss: 0.0000014475665466\n",
      "Epoch: 9830/20000, Loss: 0.0000030332198548\n",
      "Epoch: 9840/20000, Loss: 0.0000037680117657\n",
      "Epoch: 9850/20000, Loss: 0.0000016821949202\n",
      "Epoch: 9860/20000, Loss: 0.0000015101669533\n",
      "Epoch: 9870/20000, Loss: 0.0000014429596149\n",
      "Epoch: 9880/20000, Loss: 0.0000014091010598\n",
      "Epoch: 9890/20000, Loss: 0.0000013957443343\n",
      "Epoch: 9900/20000, Loss: 0.0000013903676290\n",
      "Epoch: 9910/20000, Loss: 0.0000013849529523\n",
      "Epoch: 9920/20000, Loss: 0.0000013774075569\n",
      "Epoch: 9930/20000, Loss: 0.0000013699490182\n",
      "Epoch: 9940/20000, Loss: 0.0000013636295080\n",
      "Epoch: 9950/20000, Loss: 0.0000013572765738\n",
      "Epoch: 9960/20000, Loss: 0.0000013509670680\n",
      "Epoch: 9970/20000, Loss: 0.0000013447088349\n",
      "Epoch: 9980/20000, Loss: 0.0000013384807289\n",
      "Epoch: 9990/20000, Loss: 0.0000013322794530\n",
      "Epoch: 10000/20000, Loss: 0.0000013261061440\n",
      "Epoch: 10010/20000, Loss: 0.0000013199637579\n",
      "Epoch: 10020/20000, Loss: 0.0000013138414943\n",
      "Epoch: 10030/20000, Loss: 0.0000013077523136\n",
      "Epoch: 10040/20000, Loss: 0.0000013016838238\n",
      "Epoch: 10050/20000, Loss: 0.0000012956511455\n",
      "Epoch: 10060/20000, Loss: 0.0000012896381349\n",
      "Epoch: 10070/20000, Loss: 0.0000012836547967\n",
      "Epoch: 10080/20000, Loss: 0.0000012776931726\n",
      "Epoch: 10090/20000, Loss: 0.0000012717656546\n",
      "Epoch: 10100/20000, Loss: 0.0000012662442259\n",
      "Epoch: 10110/20000, Loss: 0.0000013140260080\n",
      "Epoch: 10120/20000, Loss: 0.0000089682735052\n",
      "Epoch: 10130/20000, Loss: 0.0000015855956690\n",
      "Epoch: 10140/20000, Loss: 0.0000015076756199\n",
      "Epoch: 10150/20000, Loss: 0.0000013367985048\n",
      "Epoch: 10160/20000, Loss: 0.0000012777379652\n",
      "Epoch: 10170/20000, Loss: 0.0000012535346059\n",
      "Epoch: 10180/20000, Loss: 0.0000012368801663\n",
      "Epoch: 10190/20000, Loss: 0.0000012223631529\n",
      "Epoch: 10200/20000, Loss: 0.0000012116056496\n",
      "Epoch: 10210/20000, Loss: 0.0000012052062175\n",
      "Epoch: 10220/20000, Loss: 0.0000011999381968\n",
      "Epoch: 10230/20000, Loss: 0.0000011941990579\n",
      "Epoch: 10240/20000, Loss: 0.0000011887525488\n",
      "Epoch: 10250/20000, Loss: 0.0000011832981954\n",
      "Epoch: 10260/20000, Loss: 0.0000011778987528\n",
      "Epoch: 10270/20000, Loss: 0.0000011725228433\n",
      "Epoch: 10280/20000, Loss: 0.0000011671764923\n",
      "Epoch: 10290/20000, Loss: 0.0000011618503777\n",
      "Epoch: 10300/20000, Loss: 0.0000011565540490\n",
      "Epoch: 10310/20000, Loss: 0.0000011512814808\n",
      "Epoch: 10320/20000, Loss: 0.0000011460342648\n",
      "Epoch: 10330/20000, Loss: 0.0000011408130831\n",
      "Epoch: 10340/20000, Loss: 0.0000011356137293\n",
      "Epoch: 10350/20000, Loss: 0.0000011304434793\n",
      "Epoch: 10360/20000, Loss: 0.0000011252949434\n",
      "Epoch: 10370/20000, Loss: 0.0000011201710777\n",
      "Epoch: 10380/20000, Loss: 0.0000011150790442\n",
      "Epoch: 10390/20000, Loss: 0.0000011109580100\n",
      "Epoch: 10400/20000, Loss: 0.0000013010387647\n",
      "Epoch: 10410/20000, Loss: 0.0000082321148511\n",
      "Epoch: 10420/20000, Loss: 0.0000036102539980\n",
      "Epoch: 10430/20000, Loss: 0.0000019873114070\n",
      "Epoch: 10440/20000, Loss: 0.0000013912942904\n",
      "Epoch: 10450/20000, Loss: 0.0000011811210925\n",
      "Epoch: 10460/20000, Loss: 0.0000011121816215\n",
      "Epoch: 10470/20000, Loss: 0.0000010862528370\n",
      "Epoch: 10480/20000, Loss: 0.0000010731095017\n",
      "Epoch: 10490/20000, Loss: 0.0000010645730981\n",
      "Epoch: 10500/20000, Loss: 0.0000010584863048\n",
      "Epoch: 10510/20000, Loss: 0.0000010537095250\n",
      "Epoch: 10520/20000, Loss: 0.0000010490824707\n",
      "Epoch: 10530/20000, Loss: 0.0000010443583278\n",
      "Epoch: 10540/20000, Loss: 0.0000010397365031\n",
      "Epoch: 10550/20000, Loss: 0.0000010351303672\n",
      "Epoch: 10560/20000, Loss: 0.0000010305573142\n",
      "Epoch: 10570/20000, Loss: 0.0000010260065437\n",
      "Epoch: 10580/20000, Loss: 0.0000010214776012\n",
      "Epoch: 10590/20000, Loss: 0.0000010169804909\n",
      "Epoch: 10600/20000, Loss: 0.0000010124963410\n",
      "Epoch: 10610/20000, Loss: 0.0000010080394759\n",
      "Epoch: 10620/20000, Loss: 0.0000010036046660\n",
      "Epoch: 10630/20000, Loss: 0.0000009991986190\n",
      "Epoch: 10640/20000, Loss: 0.0000009948114439\n",
      "Epoch: 10650/20000, Loss: 0.0000009904392755\n",
      "Epoch: 10660/20000, Loss: 0.0000009860971204\n",
      "Epoch: 10670/20000, Loss: 0.0000009817796354\n",
      "Epoch: 10680/20000, Loss: 0.0000009775101262\n",
      "Epoch: 10690/20000, Loss: 0.0000009750729077\n",
      "Epoch: 10700/20000, Loss: 0.0000012343311937\n",
      "Epoch: 10710/20000, Loss: 0.0000063251281972\n",
      "Epoch: 10720/20000, Loss: 0.0000028134709282\n",
      "Epoch: 10730/20000, Loss: 0.0000014248996649\n",
      "Epoch: 10740/20000, Loss: 0.0000010647885347\n",
      "Epoch: 10750/20000, Loss: 0.0000009639935570\n",
      "Epoch: 10760/20000, Loss: 0.0000009460452475\n",
      "Epoch: 10770/20000, Loss: 0.0000009468325288\n",
      "Epoch: 10780/20000, Loss: 0.0000009422121252\n",
      "Epoch: 10790/20000, Loss: 0.0000009343197007\n",
      "Epoch: 10800/20000, Loss: 0.0000009299110957\n",
      "Epoch: 10810/20000, Loss: 0.0000009260015190\n",
      "Epoch: 10820/20000, Loss: 0.0000009219111234\n",
      "Epoch: 10830/20000, Loss: 0.0000009180209304\n",
      "Epoch: 10840/20000, Loss: 0.0000009141402302\n",
      "Epoch: 10850/20000, Loss: 0.0000009102793683\n",
      "Epoch: 10860/20000, Loss: 0.0000009064535220\n",
      "Epoch: 10870/20000, Loss: 0.0000009026452403\n",
      "Epoch: 10880/20000, Loss: 0.0000008988591276\n",
      "Epoch: 10890/20000, Loss: 0.0000008950976849\n",
      "Epoch: 10900/20000, Loss: 0.0000008913492593\n",
      "Epoch: 10910/20000, Loss: 0.0000008876290281\n",
      "Epoch: 10920/20000, Loss: 0.0000008839242582\n",
      "Epoch: 10930/20000, Loss: 0.0000008802467732\n",
      "Epoch: 10940/20000, Loss: 0.0000008765844655\n",
      "Epoch: 10950/20000, Loss: 0.0000008729512615\n",
      "Epoch: 10960/20000, Loss: 0.0000008699573186\n",
      "Epoch: 10970/20000, Loss: 0.0000009476906939\n",
      "Epoch: 10980/20000, Loss: 0.0000092643767857\n",
      "Epoch: 10990/20000, Loss: 0.0000008852488804\n",
      "Epoch: 11000/20000, Loss: 0.0000009982376241\n",
      "Epoch: 11010/20000, Loss: 0.0000009470444979\n",
      "Epoch: 11020/20000, Loss: 0.0000009109482448\n",
      "Epoch: 11030/20000, Loss: 0.0000008834495020\n",
      "Epoch: 11040/20000, Loss: 0.0000008587518323\n",
      "Epoch: 11050/20000, Loss: 0.0000008421837379\n",
      "Epoch: 11060/20000, Loss: 0.0000008361784012\n",
      "Epoch: 11070/20000, Loss: 0.0000008334603194\n",
      "Epoch: 11080/20000, Loss: 0.0000008295525049\n",
      "Epoch: 11090/20000, Loss: 0.0000008262219353\n",
      "Epoch: 11100/20000, Loss: 0.0000008228889214\n",
      "Epoch: 11110/20000, Loss: 0.0000008196316799\n",
      "Epoch: 11120/20000, Loss: 0.0000008163817142\n",
      "Epoch: 11130/20000, Loss: 0.0000008131608524\n",
      "Epoch: 11140/20000, Loss: 0.0000008099593174\n",
      "Epoch: 11150/20000, Loss: 0.0000008067754607\n",
      "Epoch: 11160/20000, Loss: 0.0000008036109875\n",
      "Epoch: 11170/20000, Loss: 0.0000008004687402\n",
      "Epoch: 11180/20000, Loss: 0.0000007973398510\n",
      "Epoch: 11190/20000, Loss: 0.0000007942305729\n",
      "Epoch: 11200/20000, Loss: 0.0000007911380635\n",
      "Epoch: 11210/20000, Loss: 0.0000007880638577\n",
      "Epoch: 11220/20000, Loss: 0.0000007850128441\n",
      "Epoch: 11230/20000, Loss: 0.0000007820570431\n",
      "Epoch: 11240/20000, Loss: 0.0000007865092471\n",
      "Epoch: 11250/20000, Loss: 0.0000019957624318\n",
      "Epoch: 11260/20000, Loss: 0.0000013730719957\n",
      "Epoch: 11270/20000, Loss: 0.0000008953151109\n",
      "Epoch: 11280/20000, Loss: 0.0000009084969292\n",
      "Epoch: 11290/20000, Loss: 0.0000008622680525\n",
      "Epoch: 11300/20000, Loss: 0.0000008218685252\n",
      "Epoch: 11310/20000, Loss: 0.0000007858547519\n",
      "Epoch: 11320/20000, Loss: 0.0000007619891562\n",
      "Epoch: 11330/20000, Loss: 0.0000007543133052\n",
      "Epoch: 11340/20000, Loss: 0.0000007525042065\n",
      "Epoch: 11350/20000, Loss: 0.0000007489128961\n",
      "Epoch: 11360/20000, Loss: 0.0000007460250799\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 11370/20000, Loss: 0.0000007432306006\n",
      "Epoch: 11380/20000, Loss: 0.0000007405038218\n",
      "Epoch: 11390/20000, Loss: 0.0000007377777251\n",
      "Epoch: 11400/20000, Loss: 0.0000007350901114\n",
      "Epoch: 11410/20000, Loss: 0.0000007324163107\n",
      "Epoch: 11420/20000, Loss: 0.0000007297570050\n",
      "Epoch: 11430/20000, Loss: 0.0000007271135019\n",
      "Epoch: 11440/20000, Loss: 0.0000007244863127\n",
      "Epoch: 11450/20000, Loss: 0.0000007218748692\n",
      "Epoch: 11460/20000, Loss: 0.0000007192832641\n",
      "Epoch: 11470/20000, Loss: 0.0000007167035960\n",
      "Epoch: 11480/20000, Loss: 0.0000007141387641\n",
      "Epoch: 11490/20000, Loss: 0.0000007116003644\n",
      "Epoch: 11500/20000, Loss: 0.0000007094545822\n",
      "Epoch: 11510/20000, Loss: 0.0000007363458394\n",
      "Epoch: 11520/20000, Loss: 0.0000042526339712\n",
      "Epoch: 11530/20000, Loss: 0.0000039396168177\n",
      "Epoch: 11540/20000, Loss: 0.0000011077611362\n",
      "Epoch: 11550/20000, Loss: 0.0000007017847565\n",
      "Epoch: 11560/20000, Loss: 0.0000007319703741\n",
      "Epoch: 11570/20000, Loss: 0.0000007405159863\n",
      "Epoch: 11580/20000, Loss: 0.0000007024693787\n",
      "Epoch: 11590/20000, Loss: 0.0000006886306778\n",
      "Epoch: 11600/20000, Loss: 0.0000006884393429\n",
      "Epoch: 11610/20000, Loss: 0.0000006836665420\n",
      "Epoch: 11620/20000, Loss: 0.0000006816674158\n",
      "Epoch: 11630/20000, Loss: 0.0000006790643283\n",
      "Epoch: 11640/20000, Loss: 0.0000006767588161\n",
      "Epoch: 11650/20000, Loss: 0.0000006744878647\n",
      "Epoch: 11660/20000, Loss: 0.0000006722241892\n",
      "Epoch: 11670/20000, Loss: 0.0000006699756909\n",
      "Epoch: 11680/20000, Loss: 0.0000006677439046\n",
      "Epoch: 11690/20000, Loss: 0.0000006655203038\n",
      "Epoch: 11700/20000, Loss: 0.0000006633160297\n",
      "Epoch: 11710/20000, Loss: 0.0000006611250001\n",
      "Epoch: 11720/20000, Loss: 0.0000006589403938\n",
      "Epoch: 11730/20000, Loss: 0.0000006567751143\n",
      "Epoch: 11740/20000, Loss: 0.0000006546242162\n",
      "Epoch: 11750/20000, Loss: 0.0000006527686196\n",
      "Epoch: 11760/20000, Loss: 0.0000006771401218\n",
      "Epoch: 11770/20000, Loss: 0.0000044726762098\n",
      "Epoch: 11780/20000, Loss: 0.0000042629735617\n",
      "Epoch: 11790/20000, Loss: 0.0000015127967572\n",
      "Epoch: 11800/20000, Loss: 0.0000008114539014\n",
      "Epoch: 11810/20000, Loss: 0.0000006545203632\n",
      "Epoch: 11820/20000, Loss: 0.0000006420711429\n",
      "Epoch: 11830/20000, Loss: 0.0000006494881291\n",
      "Epoch: 11840/20000, Loss: 0.0000006421377066\n",
      "Epoch: 11850/20000, Loss: 0.0000006335075682\n",
      "Epoch: 11860/20000, Loss: 0.0000006318403507\n",
      "Epoch: 11870/20000, Loss: 0.0000006294603736\n",
      "Epoch: 11880/20000, Loss: 0.0000006274208317\n",
      "Epoch: 11890/20000, Loss: 0.0000006254151685\n",
      "Epoch: 11900/20000, Loss: 0.0000006235039223\n",
      "Epoch: 11910/20000, Loss: 0.0000006215825010\n",
      "Epoch: 11920/20000, Loss: 0.0000006196804065\n",
      "Epoch: 11930/20000, Loss: 0.0000006177921250\n",
      "Epoch: 11940/20000, Loss: 0.0000006159129384\n",
      "Epoch: 11950/20000, Loss: 0.0000006140496112\n",
      "Epoch: 11960/20000, Loss: 0.0000006121939577\n",
      "Epoch: 11970/20000, Loss: 0.0000006103427950\n",
      "Epoch: 11980/20000, Loss: 0.0000006085087989\n",
      "Epoch: 11990/20000, Loss: 0.0000006066842957\n",
      "Epoch: 12000/20000, Loss: 0.0000006048832120\n",
      "Epoch: 12010/20000, Loss: 0.0000006035545539\n",
      "Epoch: 12020/20000, Loss: 0.0000006346113537\n",
      "Epoch: 12030/20000, Loss: 0.0000041302664613\n",
      "Epoch: 12040/20000, Loss: 0.0000036741939766\n",
      "Epoch: 12050/20000, Loss: 0.0000008397344686\n",
      "Epoch: 12060/20000, Loss: 0.0000006096790344\n",
      "Epoch: 12070/20000, Loss: 0.0000006830161965\n",
      "Epoch: 12080/20000, Loss: 0.0000006379181627\n",
      "Epoch: 12090/20000, Loss: 0.0000005911504104\n",
      "Epoch: 12100/20000, Loss: 0.0000005933084140\n",
      "Epoch: 12110/20000, Loss: 0.0000005876370892\n",
      "Epoch: 12120/20000, Loss: 0.0000005857905307\n",
      "Epoch: 12130/20000, Loss: 0.0000005834753551\n",
      "Epoch: 12140/20000, Loss: 0.0000005819148896\n",
      "Epoch: 12150/20000, Loss: 0.0000005802085639\n",
      "Epoch: 12160/20000, Loss: 0.0000005785475423\n",
      "Epoch: 12170/20000, Loss: 0.0000005769159657\n",
      "Epoch: 12180/20000, Loss: 0.0000005753022947\n",
      "Epoch: 12190/20000, Loss: 0.0000005736951039\n",
      "Epoch: 12200/20000, Loss: 0.0000005720962690\n",
      "Epoch: 12210/20000, Loss: 0.0000005705036870\n",
      "Epoch: 12220/20000, Loss: 0.0000005689228146\n",
      "Epoch: 12230/20000, Loss: 0.0000005673476267\n",
      "Epoch: 12240/20000, Loss: 0.0000005657843758\n",
      "Epoch: 12250/20000, Loss: 0.0000005643339023\n",
      "Epoch: 12260/20000, Loss: 0.0000005708141657\n",
      "Epoch: 12270/20000, Loss: 0.0000017099312117\n",
      "Epoch: 12280/20000, Loss: 0.0000008052558655\n",
      "Epoch: 12290/20000, Loss: 0.0000009946149930\n",
      "Epoch: 12300/20000, Loss: 0.0000009184646501\n",
      "Epoch: 12310/20000, Loss: 0.0000007435507996\n",
      "Epoch: 12320/20000, Loss: 0.0000006207952765\n",
      "Epoch: 12330/20000, Loss: 0.0000005619131684\n",
      "Epoch: 12340/20000, Loss: 0.0000005524092330\n",
      "Epoch: 12350/20000, Loss: 0.0000005534926117\n",
      "Epoch: 12360/20000, Loss: 0.0000005493687354\n",
      "Epoch: 12370/20000, Loss: 0.0000005477414220\n",
      "Epoch: 12380/20000, Loss: 0.0000005461336627\n",
      "Epoch: 12390/20000, Loss: 0.0000005446982527\n",
      "Epoch: 12400/20000, Loss: 0.0000005432280545\n",
      "Epoch: 12410/20000, Loss: 0.0000005418193609\n",
      "Epoch: 12420/20000, Loss: 0.0000005404174317\n",
      "Epoch: 12430/20000, Loss: 0.0000005390196520\n",
      "Epoch: 12440/20000, Loss: 0.0000005376243735\n",
      "Epoch: 12450/20000, Loss: 0.0000005362419984\n",
      "Epoch: 12460/20000, Loss: 0.0000005348630907\n",
      "Epoch: 12470/20000, Loss: 0.0000005334918001\n",
      "Epoch: 12480/20000, Loss: 0.0000005321221579\n",
      "Epoch: 12490/20000, Loss: 0.0000005307603033\n",
      "Epoch: 12500/20000, Loss: 0.0000005294049856\n",
      "Epoch: 12510/20000, Loss: 0.0000005281112294\n",
      "Epoch: 12520/20000, Loss: 0.0000005304403317\n",
      "Epoch: 12530/20000, Loss: 0.0000010154296888\n",
      "Epoch: 12540/20000, Loss: 0.0000024772546112\n",
      "Epoch: 12550/20000, Loss: 0.0000024323101115\n",
      "Epoch: 12560/20000, Loss: 0.0000011053705293\n",
      "Epoch: 12570/20000, Loss: 0.0000006516045801\n",
      "Epoch: 12580/20000, Loss: 0.0000005299614259\n",
      "Epoch: 12590/20000, Loss: 0.0000005214769772\n",
      "Epoch: 12600/20000, Loss: 0.0000005263834169\n",
      "Epoch: 12610/20000, Loss: 0.0000005191083687\n",
      "Epoch: 12620/20000, Loss: 0.0000005149369144\n",
      "Epoch: 12630/20000, Loss: 0.0000005141672546\n",
      "Epoch: 12640/20000, Loss: 0.0000005123775964\n",
      "Epoch: 12650/20000, Loss: 0.0000005111969585\n",
      "Epoch: 12660/20000, Loss: 0.0000005099012697\n",
      "Epoch: 12670/20000, Loss: 0.0000005086531019\n",
      "Epoch: 12680/20000, Loss: 0.0000005074212481\n",
      "Epoch: 12690/20000, Loss: 0.0000005061950787\n",
      "Epoch: 12700/20000, Loss: 0.0000005049732295\n",
      "Epoch: 12710/20000, Loss: 0.0000005037560413\n",
      "Epoch: 12720/20000, Loss: 0.0000005025398764\n",
      "Epoch: 12730/20000, Loss: 0.0000005013317832\n",
      "Epoch: 12740/20000, Loss: 0.0000005001256795\n",
      "Epoch: 12750/20000, Loss: 0.0000004989228160\n",
      "Epoch: 12760/20000, Loss: 0.0000004977244998\n",
      "Epoch: 12770/20000, Loss: 0.0000004965642120\n",
      "Epoch: 12780/20000, Loss: 0.0000004973524597\n",
      "Epoch: 12790/20000, Loss: 0.0000007238265880\n",
      "Epoch: 12800/20000, Loss: 0.0000072164293670\n",
      "Epoch: 12810/20000, Loss: 0.0000013947574189\n",
      "Epoch: 12820/20000, Loss: 0.0000005249043511\n",
      "Epoch: 12830/20000, Loss: 0.0000005042052180\n",
      "Epoch: 12840/20000, Loss: 0.0000005350051993\n",
      "Epoch: 12850/20000, Loss: 0.0000005229639441\n",
      "Epoch: 12860/20000, Loss: 0.0000004945931664\n",
      "Epoch: 12870/20000, Loss: 0.0000004861987009\n",
      "Epoch: 12880/20000, Loss: 0.0000004865544838\n",
      "Epoch: 12890/20000, Loss: 0.0000004838378800\n",
      "Epoch: 12900/20000, Loss: 0.0000004828735314\n",
      "Epoch: 12910/20000, Loss: 0.0000004815452712\n",
      "Epoch: 12920/20000, Loss: 0.0000004804501259\n",
      "Epoch: 12930/20000, Loss: 0.0000004793334369\n",
      "Epoch: 12940/20000, Loss: 0.0000004782168617\n",
      "Epoch: 12950/20000, Loss: 0.0000004771126783\n",
      "Epoch: 12960/20000, Loss: 0.0000004760136960\n",
      "Epoch: 12970/20000, Loss: 0.0000004749165612\n",
      "Epoch: 12980/20000, Loss: 0.0000004738209896\n",
      "Epoch: 12990/20000, Loss: 0.0000004727301928\n",
      "Epoch: 13000/20000, Loss: 0.0000004716408739\n",
      "Epoch: 13010/20000, Loss: 0.0000004705554204\n",
      "Epoch: 13020/20000, Loss: 0.0000004694763049\n",
      "Epoch: 13030/20000, Loss: 0.0000004685716704\n",
      "Epoch: 13040/20000, Loss: 0.0000004785379701\n",
      "Epoch: 13050/20000, Loss: 0.0000018102684862\n",
      "Epoch: 13060/20000, Loss: 0.0000008624014072\n",
      "Epoch: 13070/20000, Loss: 0.0000009602864566\n",
      "Epoch: 13080/20000, Loss: 0.0000009070080864\n",
      "Epoch: 13090/20000, Loss: 0.0000006335208695\n",
      "Epoch: 13100/20000, Loss: 0.0000004819023616\n",
      "Epoch: 13110/20000, Loss: 0.0000004634398465\n",
      "Epoch: 13120/20000, Loss: 0.0000004682641190\n",
      "Epoch: 13130/20000, Loss: 0.0000004594542418\n",
      "Epoch: 13140/20000, Loss: 0.0000004587033402\n",
      "Epoch: 13150/20000, Loss: 0.0000004568695715\n",
      "Epoch: 13160/20000, Loss: 0.0000004559301772\n",
      "Epoch: 13170/20000, Loss: 0.0000004547748631\n",
      "Epoch: 13180/20000, Loss: 0.0000004537315021\n",
      "Epoch: 13190/20000, Loss: 0.0000004527176145\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 13200/20000, Loss: 0.0000004517001742\n",
      "Epoch: 13210/20000, Loss: 0.0000004506816538\n",
      "Epoch: 13220/20000, Loss: 0.0000004496694430\n",
      "Epoch: 13230/20000, Loss: 0.0000004486562943\n",
      "Epoch: 13240/20000, Loss: 0.0000004476464710\n",
      "Epoch: 13250/20000, Loss: 0.0000004466360224\n",
      "Epoch: 13260/20000, Loss: 0.0000004456289275\n",
      "Epoch: 13270/20000, Loss: 0.0000004446207242\n",
      "Epoch: 13280/20000, Loss: 0.0000004436206211\n",
      "Epoch: 13290/20000, Loss: 0.0000004433352672\n",
      "Epoch: 13300/20000, Loss: 0.0000005556968290\n",
      "Epoch: 13310/20000, Loss: 0.0000102303565654\n",
      "Epoch: 13320/20000, Loss: 0.0000010348983324\n",
      "Epoch: 13330/20000, Loss: 0.0000005860124475\n",
      "Epoch: 13340/20000, Loss: 0.0000005033709272\n",
      "Epoch: 13350/20000, Loss: 0.0000004584924227\n",
      "Epoch: 13360/20000, Loss: 0.0000004399288116\n",
      "Epoch: 13370/20000, Loss: 0.0000004361826598\n",
      "Epoch: 13380/20000, Loss: 0.0000004367056761\n",
      "Epoch: 13390/20000, Loss: 0.0000004359603452\n",
      "Epoch: 13400/20000, Loss: 0.0000004337343853\n",
      "Epoch: 13410/20000, Loss: 0.0000004321617553\n",
      "Epoch: 13420/20000, Loss: 0.0000004312826150\n",
      "Epoch: 13430/20000, Loss: 0.0000004302527259\n",
      "Epoch: 13440/20000, Loss: 0.0000004293026450\n",
      "Epoch: 13450/20000, Loss: 0.0000004283407691\n",
      "Epoch: 13460/20000, Loss: 0.0000004273922229\n",
      "Epoch: 13470/20000, Loss: 0.0000004264437052\n",
      "Epoch: 13480/20000, Loss: 0.0000004254961539\n",
      "Epoch: 13490/20000, Loss: 0.0000004245517573\n",
      "Epoch: 13500/20000, Loss: 0.0000004236071334\n",
      "Epoch: 13510/20000, Loss: 0.0000004226614578\n",
      "Epoch: 13520/20000, Loss: 0.0000004217170897\n",
      "Epoch: 13530/20000, Loss: 0.0000004207731763\n",
      "Epoch: 13540/20000, Loss: 0.0000004198304282\n",
      "Epoch: 13550/20000, Loss: 0.0000004188886180\n",
      "Epoch: 13560/20000, Loss: 0.0000004179465805\n",
      "Epoch: 13570/20000, Loss: 0.0000004170378247\n",
      "Epoch: 13580/20000, Loss: 0.0000004183220028\n",
      "Epoch: 13590/20000, Loss: 0.0000006916313282\n",
      "Epoch: 13600/20000, Loss: 0.0000062910680754\n",
      "Epoch: 13610/20000, Loss: 0.0000018617223532\n",
      "Epoch: 13620/20000, Loss: 0.0000006048294381\n",
      "Epoch: 13630/20000, Loss: 0.0000004195735244\n",
      "Epoch: 13640/20000, Loss: 0.0000004211908049\n",
      "Epoch: 13650/20000, Loss: 0.0000004334627874\n",
      "Epoch: 13660/20000, Loss: 0.0000004220021879\n",
      "Epoch: 13670/20000, Loss: 0.0000004096618511\n",
      "Epoch: 13680/20000, Loss: 0.0000004086679439\n",
      "Epoch: 13690/20000, Loss: 0.0000004074527169\n",
      "Epoch: 13700/20000, Loss: 0.0000004061542427\n",
      "Epoch: 13710/20000, Loss: 0.0000004052272686\n",
      "Epoch: 13720/20000, Loss: 0.0000004043042736\n",
      "Epoch: 13730/20000, Loss: 0.0000004033740026\n",
      "Epoch: 13740/20000, Loss: 0.0000004024696807\n",
      "Epoch: 13750/20000, Loss: 0.0000004015666661\n",
      "Epoch: 13760/20000, Loss: 0.0000004006604684\n",
      "Epoch: 13770/20000, Loss: 0.0000003997603812\n",
      "Epoch: 13780/20000, Loss: 0.0000003988579351\n",
      "Epoch: 13790/20000, Loss: 0.0000003979559153\n",
      "Epoch: 13800/20000, Loss: 0.0000003970524176\n",
      "Epoch: 13810/20000, Loss: 0.0000003961502273\n",
      "Epoch: 13820/20000, Loss: 0.0000003952465022\n",
      "Epoch: 13830/20000, Loss: 0.0000003943475235\n",
      "Epoch: 13840/20000, Loss: 0.0000003936024200\n",
      "Epoch: 13850/20000, Loss: 0.0000004093671464\n",
      "Epoch: 13860/20000, Loss: 0.0000032825723792\n",
      "Epoch: 13870/20000, Loss: 0.0000042832607505\n",
      "Epoch: 13880/20000, Loss: 0.0000011583825881\n",
      "Epoch: 13890/20000, Loss: 0.0000005891002957\n",
      "Epoch: 13900/20000, Loss: 0.0000004317236915\n",
      "Epoch: 13910/20000, Loss: 0.0000003913255284\n",
      "Epoch: 13920/20000, Loss: 0.0000003889713582\n",
      "Epoch: 13930/20000, Loss: 0.0000003914845479\n",
      "Epoch: 13940/20000, Loss: 0.0000003887526532\n",
      "Epoch: 13950/20000, Loss: 0.0000003851137080\n",
      "Epoch: 13960/20000, Loss: 0.0000003841397529\n",
      "Epoch: 13970/20000, Loss: 0.0000003832152800\n",
      "Epoch: 13980/20000, Loss: 0.0000003822404437\n",
      "Epoch: 13990/20000, Loss: 0.0000003813651972\n",
      "Epoch: 14000/20000, Loss: 0.0000003804926507\n",
      "Epoch: 14010/20000, Loss: 0.0000003796198200\n",
      "Epoch: 14020/20000, Loss: 0.0000003787476146\n",
      "Epoch: 14030/20000, Loss: 0.0000003778806388\n",
      "Epoch: 14040/20000, Loss: 0.0000003770151409\n",
      "Epoch: 14050/20000, Loss: 0.0000003761456355\n",
      "Epoch: 14060/20000, Loss: 0.0000003752770681\n",
      "Epoch: 14070/20000, Loss: 0.0000003744098080\n",
      "Epoch: 14080/20000, Loss: 0.0000003735382847\n",
      "Epoch: 14090/20000, Loss: 0.0000003726704563\n",
      "Epoch: 14100/20000, Loss: 0.0000003718021162\n",
      "Epoch: 14110/20000, Loss: 0.0000003709323551\n",
      "Epoch: 14120/20000, Loss: 0.0000003702573110\n",
      "Epoch: 14130/20000, Loss: 0.0000003900060790\n",
      "Epoch: 14140/20000, Loss: 0.0000038651087380\n",
      "Epoch: 14150/20000, Loss: 0.0000044392709242\n",
      "Epoch: 14160/20000, Loss: 0.0000014050854134\n",
      "Epoch: 14170/20000, Loss: 0.0000006664019452\n",
      "Epoch: 14180/20000, Loss: 0.0000004413239481\n",
      "Epoch: 14190/20000, Loss: 0.0000003751211466\n",
      "Epoch: 14200/20000, Loss: 0.0000003645190816\n",
      "Epoch: 14210/20000, Loss: 0.0000003668119462\n",
      "Epoch: 14220/20000, Loss: 0.0000003655445084\n",
      "Epoch: 14230/20000, Loss: 0.0000003621614155\n",
      "Epoch: 14240/20000, Loss: 0.0000003610476256\n",
      "Epoch: 14250/20000, Loss: 0.0000003602067125\n",
      "Epoch: 14260/20000, Loss: 0.0000003592492988\n",
      "Epoch: 14270/20000, Loss: 0.0000003584095509\n",
      "Epoch: 14280/20000, Loss: 0.0000003575638914\n",
      "Epoch: 14290/20000, Loss: 0.0000003567176634\n",
      "Epoch: 14300/20000, Loss: 0.0000003558773187\n",
      "Epoch: 14310/20000, Loss: 0.0000003550363772\n",
      "Epoch: 14320/20000, Loss: 0.0000003541998694\n",
      "Epoch: 14330/20000, Loss: 0.0000003533559436\n",
      "Epoch: 14340/20000, Loss: 0.0000003525177021\n",
      "Epoch: 14350/20000, Loss: 0.0000003516784943\n",
      "Epoch: 14360/20000, Loss: 0.0000003508379791\n",
      "Epoch: 14370/20000, Loss: 0.0000003499917227\n",
      "Epoch: 14380/20000, Loss: 0.0000003491522591\n",
      "Epoch: 14390/20000, Loss: 0.0000003483088733\n",
      "Epoch: 14400/20000, Loss: 0.0000003475297490\n",
      "Epoch: 14410/20000, Loss: 0.0000003539969384\n",
      "Epoch: 14420/20000, Loss: 0.0000018367721850\n",
      "Epoch: 14430/20000, Loss: 0.0000020922902877\n",
      "Epoch: 14440/20000, Loss: 0.0000004518565788\n",
      "Epoch: 14450/20000, Loss: 0.0000003951299163\n",
      "Epoch: 14460/20000, Loss: 0.0000003674409186\n",
      "Epoch: 14470/20000, Loss: 0.0000003485179150\n",
      "Epoch: 14480/20000, Loss: 0.0000003422398436\n",
      "Epoch: 14490/20000, Loss: 0.0000003422437942\n",
      "Epoch: 14500/20000, Loss: 0.0000003424835313\n",
      "Epoch: 14510/20000, Loss: 0.0000003408855491\n",
      "Epoch: 14520/20000, Loss: 0.0000003389129120\n",
      "Epoch: 14530/20000, Loss: 0.0000003379312545\n",
      "Epoch: 14540/20000, Loss: 0.0000003371458206\n",
      "Epoch: 14550/20000, Loss: 0.0000003362677319\n",
      "Epoch: 14560/20000, Loss: 0.0000003354610385\n",
      "Epoch: 14570/20000, Loss: 0.0000003346431185\n",
      "Epoch: 14580/20000, Loss: 0.0000003338290071\n",
      "Epoch: 14590/20000, Loss: 0.0000003330184200\n",
      "Epoch: 14600/20000, Loss: 0.0000003322073781\n",
      "Epoch: 14610/20000, Loss: 0.0000003313966772\n",
      "Epoch: 14620/20000, Loss: 0.0000003305864595\n",
      "Epoch: 14630/20000, Loss: 0.0000003297711828\n",
      "Epoch: 14640/20000, Loss: 0.0000003289593451\n",
      "Epoch: 14650/20000, Loss: 0.0000003281489853\n",
      "Epoch: 14660/20000, Loss: 0.0000003273345897\n",
      "Epoch: 14670/20000, Loss: 0.0000003265201087\n",
      "Epoch: 14680/20000, Loss: 0.0000003257079584\n",
      "Epoch: 14690/20000, Loss: 0.0000003249474503\n",
      "Epoch: 14700/20000, Loss: 0.0000003282202101\n",
      "Epoch: 14710/20000, Loss: 0.0000009246980426\n",
      "Epoch: 14720/20000, Loss: 0.0000012391003565\n",
      "Epoch: 14730/20000, Loss: 0.0000019996784886\n",
      "Epoch: 14740/20000, Loss: 0.0000009903839100\n",
      "Epoch: 14750/20000, Loss: 0.0000005527497251\n",
      "Epoch: 14760/20000, Loss: 0.0000003822562462\n",
      "Epoch: 14770/20000, Loss: 0.0000003263656936\n",
      "Epoch: 14780/20000, Loss: 0.0000003192445206\n",
      "Epoch: 14790/20000, Loss: 0.0000003210660395\n",
      "Epoch: 14800/20000, Loss: 0.0000003181650641\n",
      "Epoch: 14810/20000, Loss: 0.0000003163637246\n",
      "Epoch: 14820/20000, Loss: 0.0000003157207686\n",
      "Epoch: 14830/20000, Loss: 0.0000003147468988\n",
      "Epoch: 14840/20000, Loss: 0.0000003139709577\n",
      "Epoch: 14850/20000, Loss: 0.0000003131739277\n",
      "Epoch: 14860/20000, Loss: 0.0000003123810188\n",
      "Epoch: 14870/20000, Loss: 0.0000003115935385\n",
      "Epoch: 14880/20000, Loss: 0.0000003108058877\n",
      "Epoch: 14890/20000, Loss: 0.0000003100226422\n",
      "Epoch: 14900/20000, Loss: 0.0000003092364409\n",
      "Epoch: 14910/20000, Loss: 0.0000003084514617\n",
      "Epoch: 14920/20000, Loss: 0.0000003076643225\n",
      "Epoch: 14930/20000, Loss: 0.0000003068782348\n",
      "Epoch: 14940/20000, Loss: 0.0000003060934830\n",
      "Epoch: 14950/20000, Loss: 0.0000003053068269\n",
      "Epoch: 14960/20000, Loss: 0.0000003045798280\n",
      "Epoch: 14970/20000, Loss: 0.0000003078458519\n",
      "Epoch: 14980/20000, Loss: 0.0000008410129340\n",
      "Epoch: 14990/20000, Loss: 0.0000019127990072\n",
      "Epoch: 15000/20000, Loss: 0.0000021881151042\n",
      "Epoch: 15010/20000, Loss: 0.0000009105319805\n",
      "Epoch: 15020/20000, Loss: 0.0000004467788131\n",
      "Epoch: 15030/20000, Loss: 0.0000003140409888\n",
      "Epoch: 15040/20000, Loss: 0.0000003010102603\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15050/20000, Loss: 0.0000003068119554\n",
      "Epoch: 15060/20000, Loss: 0.0000003009794227\n",
      "Epoch: 15070/20000, Loss: 0.0000002970169248\n",
      "Epoch: 15080/20000, Loss: 0.0000002967512103\n",
      "Epoch: 15090/20000, Loss: 0.0000002954654690\n",
      "Epoch: 15100/20000, Loss: 0.0000002947678013\n",
      "Epoch: 15110/20000, Loss: 0.0000002939499382\n",
      "Epoch: 15120/20000, Loss: 0.0000002931787435\n",
      "Epoch: 15130/20000, Loss: 0.0000002924214755\n",
      "Epoch: 15140/20000, Loss: 0.0000002916652591\n",
      "Epoch: 15150/20000, Loss: 0.0000002909068257\n",
      "Epoch: 15160/20000, Loss: 0.0000002901512062\n",
      "Epoch: 15170/20000, Loss: 0.0000002893922044\n",
      "Epoch: 15180/20000, Loss: 0.0000002886381196\n",
      "Epoch: 15190/20000, Loss: 0.0000002878807663\n",
      "Epoch: 15200/20000, Loss: 0.0000002871219635\n",
      "Epoch: 15210/20000, Loss: 0.0000002863670545\n",
      "Epoch: 15220/20000, Loss: 0.0000002856132824\n",
      "Epoch: 15230/20000, Loss: 0.0000002850962630\n",
      "Epoch: 15240/20000, Loss: 0.0000003098628554\n",
      "Epoch: 15250/20000, Loss: 0.0000044293742576\n",
      "Epoch: 15260/20000, Loss: 0.0000041692578634\n",
      "Epoch: 15270/20000, Loss: 0.0000014692251398\n",
      "Epoch: 15280/20000, Loss: 0.0000006466669333\n",
      "Epoch: 15290/20000, Loss: 0.0000003809351483\n",
      "Epoch: 15300/20000, Loss: 0.0000002972470270\n",
      "Epoch: 15310/20000, Loss: 0.0000002801351684\n",
      "Epoch: 15320/20000, Loss: 0.0000002816678659\n",
      "Epoch: 15330/20000, Loss: 0.0000002811964634\n",
      "Epoch: 15340/20000, Loss: 0.0000002781438297\n",
      "Epoch: 15350/20000, Loss: 0.0000002770989056\n",
      "Epoch: 15360/20000, Loss: 0.0000002763824796\n",
      "Epoch: 15370/20000, Loss: 0.0000002755479329\n",
      "Epoch: 15380/20000, Loss: 0.0000002748204224\n",
      "Epoch: 15390/20000, Loss: 0.0000002740941625\n",
      "Epoch: 15400/20000, Loss: 0.0000002733625877\n",
      "Epoch: 15410/20000, Loss: 0.0000002726415573\n",
      "Epoch: 15420/20000, Loss: 0.0000002719187364\n",
      "Epoch: 15430/20000, Loss: 0.0000002711981040\n",
      "Epoch: 15440/20000, Loss: 0.0000002704762778\n",
      "Epoch: 15450/20000, Loss: 0.0000002697560433\n",
      "Epoch: 15460/20000, Loss: 0.0000002690359509\n",
      "Epoch: 15470/20000, Loss: 0.0000002683139257\n",
      "Epoch: 15480/20000, Loss: 0.0000002675940607\n",
      "Epoch: 15490/20000, Loss: 0.0000002668749914\n",
      "Epoch: 15500/20000, Loss: 0.0000002661727478\n",
      "Epoch: 15510/20000, Loss: 0.0000002665710781\n",
      "Epoch: 15520/20000, Loss: 0.0000003957221679\n",
      "Epoch: 15530/20000, Loss: 0.0000089011045930\n",
      "Epoch: 15540/20000, Loss: 0.0000003340070691\n",
      "Epoch: 15550/20000, Loss: 0.0000003250958400\n",
      "Epoch: 15560/20000, Loss: 0.0000003551139116\n",
      "Epoch: 15570/20000, Loss: 0.0000003388642256\n",
      "Epoch: 15580/20000, Loss: 0.0000003025439526\n",
      "Epoch: 15590/20000, Loss: 0.0000002705849624\n",
      "Epoch: 15600/20000, Loss: 0.0000002601110509\n",
      "Epoch: 15610/20000, Loss: 0.0000002607416150\n",
      "Epoch: 15620/20000, Loss: 0.0000002590789165\n",
      "Epoch: 15630/20000, Loss: 0.0000002580373746\n",
      "Epoch: 15640/20000, Loss: 0.0000002573177653\n",
      "Epoch: 15650/20000, Loss: 0.0000002565978434\n",
      "Epoch: 15660/20000, Loss: 0.0000002558828385\n",
      "Epoch: 15670/20000, Loss: 0.0000002551979605\n",
      "Epoch: 15680/20000, Loss: 0.0000002545128552\n",
      "Epoch: 15690/20000, Loss: 0.0000002538276931\n",
      "Epoch: 15700/20000, Loss: 0.0000002531437815\n",
      "Epoch: 15710/20000, Loss: 0.0000002524596141\n",
      "Epoch: 15720/20000, Loss: 0.0000002517763846\n",
      "Epoch: 15730/20000, Loss: 0.0000002510954573\n",
      "Epoch: 15740/20000, Loss: 0.0000002504123415\n",
      "Epoch: 15750/20000, Loss: 0.0000002497311016\n",
      "Epoch: 15760/20000, Loss: 0.0000002490527322\n",
      "Epoch: 15770/20000, Loss: 0.0000002484752883\n",
      "Epoch: 15780/20000, Loss: 0.0000002547484144\n",
      "Epoch: 15790/20000, Loss: 0.0000011471734069\n",
      "Epoch: 15800/20000, Loss: 0.0000002801730545\n",
      "Epoch: 15810/20000, Loss: 0.0000013917579054\n",
      "Epoch: 15820/20000, Loss: 0.0000008185336355\n",
      "Epoch: 15830/20000, Loss: 0.0000004286952446\n",
      "Epoch: 15840/20000, Loss: 0.0000002708850673\n",
      "Epoch: 15850/20000, Loss: 0.0000002444024574\n",
      "Epoch: 15860/20000, Loss: 0.0000002505278758\n",
      "Epoch: 15870/20000, Loss: 0.0000002450782972\n",
      "Epoch: 15880/20000, Loss: 0.0000002420802616\n",
      "Epoch: 15890/20000, Loss: 0.0000002417247060\n",
      "Epoch: 15900/20000, Loss: 0.0000002406635815\n",
      "Epoch: 15910/20000, Loss: 0.0000002400106780\n",
      "Epoch: 15920/20000, Loss: 0.0000002393516354\n",
      "Epoch: 15930/20000, Loss: 0.0000002386846631\n",
      "Epoch: 15940/20000, Loss: 0.0000002380359092\n",
      "Epoch: 15950/20000, Loss: 0.0000002373918591\n",
      "Epoch: 15960/20000, Loss: 0.0000002367474252\n",
      "Epoch: 15970/20000, Loss: 0.0000002361028493\n",
      "Epoch: 15980/20000, Loss: 0.0000002354623945\n",
      "Epoch: 15990/20000, Loss: 0.0000002348205470\n",
      "Epoch: 16000/20000, Loss: 0.0000002341795948\n",
      "Epoch: 16010/20000, Loss: 0.0000002335414848\n",
      "Epoch: 16020/20000, Loss: 0.0000002329428384\n",
      "Epoch: 16030/20000, Loss: 0.0000002337789056\n",
      "Epoch: 16040/20000, Loss: 0.0000003465954705\n",
      "Epoch: 16050/20000, Loss: 0.0000072618036029\n",
      "Epoch: 16060/20000, Loss: 0.0000008120182429\n",
      "Epoch: 16070/20000, Loss: 0.0000010197096572\n",
      "Epoch: 16080/20000, Loss: 0.0000004434158711\n",
      "Epoch: 16090/20000, Loss: 0.0000002328179818\n",
      "Epoch: 16100/20000, Loss: 0.0000002493764271\n",
      "Epoch: 16110/20000, Loss: 0.0000002393595082\n",
      "Epoch: 16120/20000, Loss: 0.0000002277742652\n",
      "Epoch: 16130/20000, Loss: 0.0000002285336507\n",
      "Epoch: 16140/20000, Loss: 0.0000002263578978\n",
      "Epoch: 16150/20000, Loss: 0.0000002256583258\n",
      "Epoch: 16160/20000, Loss: 0.0000002250597646\n",
      "Epoch: 16170/20000, Loss: 0.0000002243834842\n",
      "Epoch: 16180/20000, Loss: 0.0000002237533181\n",
      "Epoch: 16190/20000, Loss: 0.0000002231436440\n",
      "Epoch: 16200/20000, Loss: 0.0000002225381195\n",
      "Epoch: 16210/20000, Loss: 0.0000002219343145\n",
      "Epoch: 16220/20000, Loss: 0.0000002213282784\n",
      "Epoch: 16230/20000, Loss: 0.0000002207291061\n",
      "Epoch: 16240/20000, Loss: 0.0000002201265232\n",
      "Epoch: 16250/20000, Loss: 0.0000002195302926\n",
      "Epoch: 16260/20000, Loss: 0.0000002189951687\n",
      "Epoch: 16270/20000, Loss: 0.0000002214134298\n",
      "Epoch: 16280/20000, Loss: 0.0000005175782576\n",
      "Epoch: 16290/20000, Loss: 0.0000056859735196\n",
      "Epoch: 16300/20000, Loss: 0.0000010664638239\n",
      "Epoch: 16310/20000, Loss: 0.0000002192462176\n",
      "Epoch: 16320/20000, Loss: 0.0000002934501424\n",
      "Epoch: 16330/20000, Loss: 0.0000002993070325\n",
      "Epoch: 16340/20000, Loss: 0.0000002351466151\n",
      "Epoch: 16350/20000, Loss: 0.0000002148622116\n",
      "Epoch: 16360/20000, Loss: 0.0000002180692746\n",
      "Epoch: 16370/20000, Loss: 0.0000002134160013\n",
      "Epoch: 16380/20000, Loss: 0.0000002133040766\n",
      "Epoch: 16390/20000, Loss: 0.0000002121838492\n",
      "Epoch: 16400/20000, Loss: 0.0000002116370297\n",
      "Epoch: 16410/20000, Loss: 0.0000002110604953\n",
      "Epoch: 16420/20000, Loss: 0.0000002104754344\n",
      "Epoch: 16430/20000, Loss: 0.0000002099042860\n",
      "Epoch: 16440/20000, Loss: 0.0000002093400155\n",
      "Epoch: 16450/20000, Loss: 0.0000002087768820\n",
      "Epoch: 16460/20000, Loss: 0.0000002082176849\n",
      "Epoch: 16470/20000, Loss: 0.0000002076595251\n",
      "Epoch: 16480/20000, Loss: 0.0000002071016070\n",
      "Epoch: 16490/20000, Loss: 0.0000002065459626\n",
      "Epoch: 16500/20000, Loss: 0.0000002059881865\n",
      "Epoch: 16510/20000, Loss: 0.0000002054641755\n",
      "Epoch: 16520/20000, Loss: 0.0000002070074174\n",
      "Epoch: 16530/20000, Loss: 0.0000004913641760\n",
      "Epoch: 16540/20000, Loss: 0.0000058704963521\n",
      "Epoch: 16550/20000, Loss: 0.0000020205970941\n",
      "Epoch: 16560/20000, Loss: 0.0000006136589832\n",
      "Epoch: 16570/20000, Loss: 0.0000002848281042\n",
      "Epoch: 16580/20000, Loss: 0.0000002082983457\n",
      "Epoch: 16590/20000, Loss: 0.0000002043373257\n",
      "Epoch: 16600/20000, Loss: 0.0000002094053002\n",
      "Epoch: 16610/20000, Loss: 0.0000002055433868\n",
      "Epoch: 16620/20000, Loss: 0.0000002007090387\n",
      "Epoch: 16630/20000, Loss: 0.0000002002068697\n",
      "Epoch: 16640/20000, Loss: 0.0000001995084773\n",
      "Epoch: 16650/20000, Loss: 0.0000001988638445\n",
      "Epoch: 16660/20000, Loss: 0.0000001983193414\n",
      "Epoch: 16670/20000, Loss: 0.0000001977983572\n",
      "Epoch: 16680/20000, Loss: 0.0000001972702819\n",
      "Epoch: 16690/20000, Loss: 0.0000001967537031\n",
      "Epoch: 16700/20000, Loss: 0.0000001962385596\n",
      "Epoch: 16710/20000, Loss: 0.0000001957247378\n",
      "Epoch: 16720/20000, Loss: 0.0000001952124933\n",
      "Epoch: 16730/20000, Loss: 0.0000001947036452\n",
      "Epoch: 16740/20000, Loss: 0.0000001941921113\n",
      "Epoch: 16750/20000, Loss: 0.0000001936834195\n",
      "Epoch: 16760/20000, Loss: 0.0000001931768736\n",
      "Epoch: 16770/20000, Loss: 0.0000001926719904\n",
      "Epoch: 16780/20000, Loss: 0.0000001922214778\n",
      "Epoch: 16790/20000, Loss: 0.0000001945271180\n",
      "Epoch: 16800/20000, Loss: 0.0000004940961276\n",
      "Epoch: 16810/20000, Loss: 0.0000055939422055\n",
      "Epoch: 16820/20000, Loss: 0.0000013012009958\n",
      "Epoch: 16830/20000, Loss: 0.0000002325388380\n",
      "Epoch: 16840/20000, Loss: 0.0000002114251743\n",
      "Epoch: 16850/20000, Loss: 0.0000002481678791\n",
      "Epoch: 16860/20000, Loss: 0.0000002208618355\n",
      "Epoch: 16870/20000, Loss: 0.0000001906699367\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 16880/20000, Loss: 0.0000001899947364\n",
      "Epoch: 16890/20000, Loss: 0.0000001887459575\n",
      "Epoch: 16900/20000, Loss: 0.0000001872263198\n",
      "Epoch: 16910/20000, Loss: 0.0000001867154680\n",
      "Epoch: 16920/20000, Loss: 0.0000001861864831\n",
      "Epoch: 16930/20000, Loss: 0.0000001856454617\n",
      "Epoch: 16940/20000, Loss: 0.0000001851680338\n",
      "Epoch: 16950/20000, Loss: 0.0000001846959492\n",
      "Epoch: 16960/20000, Loss: 0.0000001842248736\n",
      "Epoch: 16970/20000, Loss: 0.0000001837566828\n",
      "Epoch: 16980/20000, Loss: 0.0000001832891030\n",
      "Epoch: 16990/20000, Loss: 0.0000001828224754\n",
      "Epoch: 17000/20000, Loss: 0.0000001823572688\n",
      "Epoch: 17010/20000, Loss: 0.0000001818937108\n",
      "Epoch: 17020/20000, Loss: 0.0000001814286748\n",
      "Epoch: 17030/20000, Loss: 0.0000001809697778\n",
      "Epoch: 17040/20000, Loss: 0.0000001806802317\n",
      "Epoch: 17050/20000, Loss: 0.0000001962504115\n",
      "Epoch: 17060/20000, Loss: 0.0000027672597298\n",
      "Epoch: 17070/20000, Loss: 0.0000035186676541\n",
      "Epoch: 17080/20000, Loss: 0.0000005781151344\n",
      "Epoch: 17090/20000, Loss: 0.0000002332264302\n",
      "Epoch: 17100/20000, Loss: 0.0000001803092999\n",
      "Epoch: 17110/20000, Loss: 0.0000001839273125\n",
      "Epoch: 17120/20000, Loss: 0.0000001904443394\n",
      "Epoch: 17130/20000, Loss: 0.0000001857148675\n",
      "Epoch: 17140/20000, Loss: 0.0000001782943144\n",
      "Epoch: 17150/20000, Loss: 0.0000001766198636\n",
      "Epoch: 17160/20000, Loss: 0.0000001764412616\n",
      "Epoch: 17170/20000, Loss: 0.0000001756046970\n",
      "Epoch: 17180/20000, Loss: 0.0000001752167833\n",
      "Epoch: 17190/20000, Loss: 0.0000001747341258\n",
      "Epoch: 17200/20000, Loss: 0.0000001743022864\n",
      "Epoch: 17210/20000, Loss: 0.0000001738760744\n",
      "Epoch: 17220/20000, Loss: 0.0000001734477593\n",
      "Epoch: 17230/20000, Loss: 0.0000001730230395\n",
      "Epoch: 17240/20000, Loss: 0.0000001726015313\n",
      "Epoch: 17250/20000, Loss: 0.0000001721789999\n",
      "Epoch: 17260/20000, Loss: 0.0000001717580176\n",
      "Epoch: 17270/20000, Loss: 0.0000001713391384\n",
      "Epoch: 17280/20000, Loss: 0.0000001709213535\n",
      "Epoch: 17290/20000, Loss: 0.0000001705038954\n",
      "Epoch: 17300/20000, Loss: 0.0000001700926617\n",
      "Epoch: 17310/20000, Loss: 0.0000001698049203\n",
      "Epoch: 17320/20000, Loss: 0.0000001778243472\n",
      "Epoch: 17330/20000, Loss: 0.0000012411580883\n",
      "Epoch: 17340/20000, Loss: 0.0000002096803229\n",
      "Epoch: 17350/20000, Loss: 0.0000009908029597\n",
      "Epoch: 17360/20000, Loss: 0.0000006791018450\n",
      "Epoch: 17370/20000, Loss: 0.0000003526100727\n",
      "Epoch: 17380/20000, Loss: 0.0000001972720582\n",
      "Epoch: 17390/20000, Loss: 0.0000001675704482\n",
      "Epoch: 17400/20000, Loss: 0.0000001738523565\n",
      "Epoch: 17410/20000, Loss: 0.0000001686115496\n",
      "Epoch: 17420/20000, Loss: 0.0000001662553331\n",
      "Epoch: 17430/20000, Loss: 0.0000001660158944\n",
      "Epoch: 17440/20000, Loss: 0.0000001653002215\n",
      "Epoch: 17450/20000, Loss: 0.0000001648642041\n",
      "Epoch: 17460/20000, Loss: 0.0000001644799852\n",
      "Epoch: 17470/20000, Loss: 0.0000001640774059\n",
      "Epoch: 17480/20000, Loss: 0.0000001636844331\n",
      "Epoch: 17490/20000, Loss: 0.0000001632994469\n",
      "Epoch: 17500/20000, Loss: 0.0000001629179280\n",
      "Epoch: 17510/20000, Loss: 0.0000001625372050\n",
      "Epoch: 17520/20000, Loss: 0.0000001621552883\n",
      "Epoch: 17530/20000, Loss: 0.0000001617767253\n",
      "Epoch: 17540/20000, Loss: 0.0000001613970824\n",
      "Epoch: 17550/20000, Loss: 0.0000001610214753\n",
      "Epoch: 17560/20000, Loss: 0.0000001606526467\n",
      "Epoch: 17570/20000, Loss: 0.0000001606467208\n",
      "Epoch: 17580/20000, Loss: 0.0000001939394991\n",
      "Epoch: 17590/20000, Loss: 0.0000046364225454\n",
      "Epoch: 17600/20000, Loss: 0.0000035626278532\n",
      "Epoch: 17610/20000, Loss: 0.0000011301724498\n",
      "Epoch: 17620/20000, Loss: 0.0000003651462350\n",
      "Epoch: 17630/20000, Loss: 0.0000001784024022\n",
      "Epoch: 17640/20000, Loss: 0.0000001605054365\n",
      "Epoch: 17650/20000, Loss: 0.0000001700006607\n",
      "Epoch: 17660/20000, Loss: 0.0000001644740166\n",
      "Epoch: 17670/20000, Loss: 0.0000001576721047\n",
      "Epoch: 17680/20000, Loss: 0.0000001577508186\n",
      "Epoch: 17690/20000, Loss: 0.0000001568638623\n",
      "Epoch: 17700/20000, Loss: 0.0000001564637699\n",
      "Epoch: 17710/20000, Loss: 0.0000001560180607\n",
      "Epoch: 17720/20000, Loss: 0.0000001556762612\n",
      "Epoch: 17730/20000, Loss: 0.0000001553166840\n",
      "Epoch: 17740/20000, Loss: 0.0000001549642690\n",
      "Epoch: 17750/20000, Loss: 0.0000001546161457\n",
      "Epoch: 17760/20000, Loss: 0.0000001542709498\n",
      "Epoch: 17770/20000, Loss: 0.0000001539270613\n",
      "Epoch: 17780/20000, Loss: 0.0000001535843097\n",
      "Epoch: 17790/20000, Loss: 0.0000001532424818\n",
      "Epoch: 17800/20000, Loss: 0.0000001529028424\n",
      "Epoch: 17810/20000, Loss: 0.0000001525652493\n",
      "Epoch: 17820/20000, Loss: 0.0000001522340796\n",
      "Epoch: 17830/20000, Loss: 0.0000001520868409\n",
      "Epoch: 17840/20000, Loss: 0.0000001644511656\n",
      "Epoch: 17850/20000, Loss: 0.0000017563634174\n",
      "Epoch: 17860/20000, Loss: 0.0000011152055777\n",
      "Epoch: 17870/20000, Loss: 0.0000003344014203\n",
      "Epoch: 17880/20000, Loss: 0.0000004482016323\n",
      "Epoch: 17890/20000, Loss: 0.0000003239998705\n",
      "Epoch: 17900/20000, Loss: 0.0000001982455871\n",
      "Epoch: 17910/20000, Loss: 0.0000001511764651\n",
      "Epoch: 17920/20000, Loss: 0.0000001541234269\n",
      "Epoch: 17930/20000, Loss: 0.0000001518848620\n",
      "Epoch: 17940/20000, Loss: 0.0000001491558947\n",
      "Epoch: 17950/20000, Loss: 0.0000001491035135\n",
      "Epoch: 17960/20000, Loss: 0.0000001484579997\n",
      "Epoch: 17970/20000, Loss: 0.0000001480981666\n",
      "Epoch: 17980/20000, Loss: 0.0000001477865226\n",
      "Epoch: 17990/20000, Loss: 0.0000001474552107\n",
      "Epoch: 18000/20000, Loss: 0.0000001471357649\n",
      "Epoch: 18010/20000, Loss: 0.0000001468212361\n",
      "Epoch: 18020/20000, Loss: 0.0000001465098904\n",
      "Epoch: 18030/20000, Loss: 0.0000001461996675\n",
      "Epoch: 18040/20000, Loss: 0.0000001458895866\n",
      "Epoch: 18050/20000, Loss: 0.0000001455826322\n",
      "Epoch: 18060/20000, Loss: 0.0000001452756777\n",
      "Epoch: 18070/20000, Loss: 0.0000001449715086\n",
      "Epoch: 18080/20000, Loss: 0.0000001447313451\n",
      "Epoch: 18090/20000, Loss: 0.0000001476803675\n",
      "Epoch: 18100/20000, Loss: 0.0000004997348242\n",
      "Epoch: 18110/20000, Loss: 0.0000044814605644\n",
      "Epoch: 18120/20000, Loss: 0.0000015398882169\n",
      "Epoch: 18130/20000, Loss: 0.0000002596958382\n",
      "Epoch: 18140/20000, Loss: 0.0000001474229379\n",
      "Epoch: 18150/20000, Loss: 0.0000001850393687\n",
      "Epoch: 18160/20000, Loss: 0.0000001744005260\n",
      "Epoch: 18170/20000, Loss: 0.0000001462476575\n",
      "Epoch: 18180/20000, Loss: 0.0000001437956740\n",
      "Epoch: 18190/20000, Loss: 0.0000001434626853\n",
      "Epoch: 18200/20000, Loss: 0.0000001419671776\n",
      "Epoch: 18210/20000, Loss: 0.0000001417129454\n",
      "Epoch: 18220/20000, Loss: 0.0000001413484654\n",
      "Epoch: 18230/20000, Loss: 0.0000001409963062\n",
      "Epoch: 18240/20000, Loss: 0.0000001407098722\n",
      "Epoch: 18250/20000, Loss: 0.0000001404235803\n",
      "Epoch: 18260/20000, Loss: 0.0000001401386953\n",
      "Epoch: 18270/20000, Loss: 0.0000001398564535\n",
      "Epoch: 18280/20000, Loss: 0.0000001395756328\n",
      "Epoch: 18290/20000, Loss: 0.0000001392968869\n",
      "Epoch: 18300/20000, Loss: 0.0000001390187663\n",
      "Epoch: 18310/20000, Loss: 0.0000001387413562\n",
      "Epoch: 18320/20000, Loss: 0.0000001384670725\n",
      "Epoch: 18330/20000, Loss: 0.0000001382262980\n",
      "Epoch: 18340/20000, Loss: 0.0000001394631397\n",
      "Epoch: 18350/20000, Loss: 0.0000002863254451\n",
      "Epoch: 18360/20000, Loss: 0.0000080357795014\n",
      "Epoch: 18370/20000, Loss: 0.0000001463087500\n",
      "Epoch: 18380/20000, Loss: 0.0000003788998981\n",
      "Epoch: 18390/20000, Loss: 0.0000003654411671\n",
      "Epoch: 18400/20000, Loss: 0.0000002392575595\n",
      "Epoch: 18410/20000, Loss: 0.0000001515170425\n",
      "Epoch: 18420/20000, Loss: 0.0000001375958334\n",
      "Epoch: 18430/20000, Loss: 0.0000001410771944\n",
      "Epoch: 18440/20000, Loss: 0.0000001363338669\n",
      "Epoch: 18450/20000, Loss: 0.0000001362639779\n",
      "Epoch: 18460/20000, Loss: 0.0000001354923853\n",
      "Epoch: 18470/20000, Loss: 0.0000001352905343\n",
      "Epoch: 18480/20000, Loss: 0.0000001349550587\n",
      "Epoch: 18490/20000, Loss: 0.0000001346743232\n",
      "Epoch: 18500/20000, Loss: 0.0000001344162683\n",
      "Epoch: 18510/20000, Loss: 0.0000001341573324\n",
      "Epoch: 18520/20000, Loss: 0.0000001339013949\n",
      "Epoch: 18530/20000, Loss: 0.0000001336470774\n",
      "Epoch: 18540/20000, Loss: 0.0000001333944795\n",
      "Epoch: 18550/20000, Loss: 0.0000001331431179\n",
      "Epoch: 18560/20000, Loss: 0.0000001328912447\n",
      "Epoch: 18570/20000, Loss: 0.0000001326430947\n",
      "Epoch: 18580/20000, Loss: 0.0000001324050487\n",
      "Epoch: 18590/20000, Loss: 0.0000001325959431\n",
      "Epoch: 18600/20000, Loss: 0.0000001679670021\n",
      "Epoch: 18610/20000, Loss: 0.0000044544135562\n",
      "Epoch: 18620/20000, Loss: 0.0000034183967728\n",
      "Epoch: 18630/20000, Loss: 0.0000008850121276\n",
      "Epoch: 18640/20000, Loss: 0.0000002192490314\n",
      "Epoch: 18650/20000, Loss: 0.0000001321122340\n",
      "Epoch: 18660/20000, Loss: 0.0000001535296263\n",
      "Epoch: 18670/20000, Loss: 0.0000001495089492\n",
      "Epoch: 18680/20000, Loss: 0.0000001326681200\n",
      "Epoch: 18690/20000, Loss: 0.0000001314351437\n",
      "Epoch: 18700/20000, Loss: 0.0000001309413733\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 18710/20000, Loss: 0.0000001301024213\n",
      "Epoch: 18720/20000, Loss: 0.0000001298183179\n",
      "Epoch: 18730/20000, Loss: 0.0000001295658905\n",
      "Epoch: 18740/20000, Loss: 0.0000001292884235\n",
      "Epoch: 18750/20000, Loss: 0.0000001290472795\n",
      "Epoch: 18760/20000, Loss: 0.0000001288126583\n",
      "Epoch: 18770/20000, Loss: 0.0000001285797282\n",
      "Epoch: 18780/20000, Loss: 0.0000001283486455\n",
      "Epoch: 18790/20000, Loss: 0.0000001281187991\n",
      "Epoch: 18800/20000, Loss: 0.0000001278915676\n",
      "Epoch: 18810/20000, Loss: 0.0000001276634407\n",
      "Epoch: 18820/20000, Loss: 0.0000001274366355\n",
      "Epoch: 18830/20000, Loss: 0.0000001272129566\n",
      "Epoch: 18840/20000, Loss: 0.0000001270169037\n",
      "Epoch: 18850/20000, Loss: 0.0000001283235207\n",
      "Epoch: 18860/20000, Loss: 0.0000003023347688\n",
      "Epoch: 18870/20000, Loss: 0.0000080271083789\n",
      "Epoch: 18880/20000, Loss: 0.0000005344680289\n",
      "Epoch: 18890/20000, Loss: 0.0000001300650325\n",
      "Epoch: 18900/20000, Loss: 0.0000001695432843\n",
      "Epoch: 18910/20000, Loss: 0.0000001846373010\n",
      "Epoch: 18920/20000, Loss: 0.0000001631595836\n",
      "Epoch: 18930/20000, Loss: 0.0000001345973999\n",
      "Epoch: 18940/20000, Loss: 0.0000001256617423\n",
      "Epoch: 18950/20000, Loss: 0.0000001269021368\n",
      "Epoch: 18960/20000, Loss: 0.0000001253924609\n",
      "Epoch: 18970/20000, Loss: 0.0000001250827637\n",
      "Epoch: 18980/20000, Loss: 0.0000001247234422\n",
      "Epoch: 18990/20000, Loss: 0.0000001245193317\n",
      "Epoch: 19000/20000, Loss: 0.0000001242724466\n",
      "Epoch: 19010/20000, Loss: 0.0000001240534431\n",
      "Epoch: 19020/20000, Loss: 0.0000001238419856\n",
      "Epoch: 19030/20000, Loss: 0.0000001236303433\n",
      "Epoch: 19040/20000, Loss: 0.0000001234226517\n",
      "Epoch: 19050/20000, Loss: 0.0000001232119757\n",
      "Epoch: 19060/20000, Loss: 0.0000001230060036\n",
      "Epoch: 19070/20000, Loss: 0.0000001228007562\n",
      "Epoch: 19080/20000, Loss: 0.0000001225966031\n",
      "Epoch: 19090/20000, Loss: 0.0000001223920094\n",
      "Epoch: 19100/20000, Loss: 0.0000001221907695\n",
      "Epoch: 19110/20000, Loss: 0.0000001219999319\n",
      "Epoch: 19120/20000, Loss: 0.0000001229174131\n",
      "Epoch: 19130/20000, Loss: 0.0000003196216483\n",
      "Epoch: 19140/20000, Loss: 0.0000081958069131\n",
      "Epoch: 19150/20000, Loss: 0.0000023055140446\n",
      "Epoch: 19160/20000, Loss: 0.0000008836133816\n",
      "Epoch: 19170/20000, Loss: 0.0000004172045465\n",
      "Epoch: 19180/20000, Loss: 0.0000002296802819\n",
      "Epoch: 19190/20000, Loss: 0.0000001579566060\n",
      "Epoch: 19200/20000, Loss: 0.0000001313563729\n",
      "Epoch: 19210/20000, Loss: 0.0000001225033373\n",
      "Epoch: 19220/20000, Loss: 0.0000001207885703\n",
      "Epoch: 19230/20000, Loss: 0.0000001209085099\n",
      "Epoch: 19240/20000, Loss: 0.0000001205819018\n",
      "Epoch: 19250/20000, Loss: 0.0000001201344588\n",
      "Epoch: 19260/20000, Loss: 0.0000001199515651\n",
      "Epoch: 19270/20000, Loss: 0.0000001197268205\n",
      "Epoch: 19280/20000, Loss: 0.0000001195314070\n",
      "Epoch: 19290/20000, Loss: 0.0000001193333929\n",
      "Epoch: 19300/20000, Loss: 0.0000001191414469\n",
      "Epoch: 19310/20000, Loss: 0.0000001189496857\n",
      "Epoch: 19320/20000, Loss: 0.0000001187612781\n",
      "Epoch: 19330/20000, Loss: 0.0000001185747038\n",
      "Epoch: 19340/20000, Loss: 0.0000001183887051\n",
      "Epoch: 19350/20000, Loss: 0.0000001182035163\n",
      "Epoch: 19360/20000, Loss: 0.0000001180198552\n",
      "Epoch: 19370/20000, Loss: 0.0000001178358744\n",
      "Epoch: 19380/20000, Loss: 0.0000001176550413\n",
      "Epoch: 19390/20000, Loss: 0.0000001174727018\n",
      "Epoch: 19400/20000, Loss: 0.0000001172913358\n",
      "Epoch: 19410/20000, Loss: 0.0000001171127337\n",
      "Epoch: 19420/20000, Loss: 0.0000001169434185\n",
      "Epoch: 19430/20000, Loss: 0.0000001190693482\n",
      "Epoch: 19440/20000, Loss: 0.0000008538759175\n",
      "Epoch: 19450/20000, Loss: 0.0000002572506332\n",
      "Epoch: 19460/20000, Loss: 0.0000002028737924\n",
      "Epoch: 19470/20000, Loss: 0.0000005513346650\n",
      "Epoch: 19480/20000, Loss: 0.0000004123207304\n",
      "Epoch: 19490/20000, Loss: 0.0000001979357194\n",
      "Epoch: 19500/20000, Loss: 0.0000001288721592\n",
      "Epoch: 19510/20000, Loss: 0.0000001176455484\n",
      "Epoch: 19520/20000, Loss: 0.0000001164314085\n",
      "Epoch: 19530/20000, Loss: 0.0000001161583896\n",
      "Epoch: 19540/20000, Loss: 0.0000001159563325\n",
      "Epoch: 19550/20000, Loss: 0.0000001157778797\n",
      "Epoch: 19560/20000, Loss: 0.0000001155847116\n",
      "Epoch: 19570/20000, Loss: 0.0000001153701419\n",
      "Epoch: 19580/20000, Loss: 0.0000001151601978\n",
      "Epoch: 19590/20000, Loss: 0.0000001149748883\n",
      "Epoch: 19600/20000, Loss: 0.0000001148006135\n",
      "Epoch: 19610/20000, Loss: 0.0000001146242070\n",
      "Epoch: 19620/20000, Loss: 0.0000001144522628\n",
      "Epoch: 19630/20000, Loss: 0.0000001142803612\n",
      "Epoch: 19640/20000, Loss: 0.0000001141134547\n",
      "Epoch: 19650/20000, Loss: 0.0000001139462995\n",
      "Epoch: 19660/20000, Loss: 0.0000001137803096\n",
      "Epoch: 19670/20000, Loss: 0.0000001136157124\n",
      "Epoch: 19680/20000, Loss: 0.0000001134524865\n",
      "Epoch: 19690/20000, Loss: 0.0000001132884009\n",
      "Epoch: 19700/20000, Loss: 0.0000001131274132\n",
      "Epoch: 19710/20000, Loss: 0.0000001129666956\n",
      "Epoch: 19720/20000, Loss: 0.0000001128048339\n",
      "Epoch: 19730/20000, Loss: 0.0000001126459281\n",
      "Epoch: 19740/20000, Loss: 0.0000001124883582\n",
      "Epoch: 19750/20000, Loss: 0.0000001123447362\n",
      "Epoch: 19760/20000, Loss: 0.0000001130438392\n",
      "Epoch: 19770/20000, Loss: 0.0000002074180969\n",
      "Epoch: 19780/20000, Loss: 0.0000082894312072\n",
      "Epoch: 19790/20000, Loss: 0.0000002217538650\n",
      "Epoch: 19800/20000, Loss: 0.0000004553210431\n",
      "Epoch: 19810/20000, Loss: 0.0000003342967432\n",
      "Epoch: 19820/20000, Loss: 0.0000002250751550\n",
      "Epoch: 19830/20000, Loss: 0.0000001511216254\n",
      "Epoch: 19840/20000, Loss: 0.0000001164005212\n",
      "Epoch: 19850/20000, Loss: 0.0000001121164672\n",
      "Epoch: 19860/20000, Loss: 0.0000001133601444\n",
      "Epoch: 19870/20000, Loss: 0.0000001114301256\n",
      "Epoch: 19880/20000, Loss: 0.0000001112461305\n",
      "Epoch: 19890/20000, Loss: 0.0000001109280490\n",
      "Epoch: 19900/20000, Loss: 0.0000001107739109\n",
      "Epoch: 19910/20000, Loss: 0.0000001105822207\n",
      "Epoch: 19920/20000, Loss: 0.0000001104228602\n",
      "Epoch: 19930/20000, Loss: 0.0000001102682319\n",
      "Epoch: 19940/20000, Loss: 0.0000001101145699\n",
      "Epoch: 19950/20000, Loss: 0.0000001099621088\n",
      "Epoch: 19960/20000, Loss: 0.0000001098106637\n",
      "Epoch: 19970/20000, Loss: 0.0000001096618405\n",
      "Epoch: 19980/20000, Loss: 0.0000001095132731\n",
      "Epoch: 19990/20000, Loss: 0.0000001093661197\n",
      "Epoch: 20000/20000, Loss: 0.0000001092180497\n"
     ]
    }
   ],
   "source": [
    "# Create LEM instance\n",
    "lem = LEM(input_size, hidden_size, output_size, dt=0.1)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(lem.parameters(), lr=0.001)\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Forward pass\n",
    "    output = lem(input_tensor)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch + 1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch + 1}/{num_epochs}, Loss: {loss.item():.16f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "719add3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# # # dt=0.25, 0.15\n",
    "# lem = LEM(input_size, hidden_size, output_size, dt=0.001)\n",
    "\n",
    "# # Loss and optimizer\n",
    "# criterion = nn.MSELoss()\n",
    "# optimizer = torch.optim.Adam(lem.parameters(), lr=0.01)\n",
    "\n",
    "# # Training loop\n",
    "# for epoch in range(num_epochs):\n",
    "#     # Set initial hidden state\n",
    "#     output = lem(input_tensor)\n",
    "#     loss = criterion(output, target_tensor)\n",
    "\n",
    "#     # Backward and optimize\n",
    "#     optimizer.zero_grad()\n",
    "#     loss.backward()\n",
    "#     optimizer.step()\n",
    "\n",
    "#     # Print progress\n",
    "#     if (epoch+1) % 10 == 0:\n",
    "#         print(f'Epoch: {epoch+1}/{num_epochs}, Loss: {loss.item():.4f}')\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "78de0827",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 201])\n",
      "torch.Size([1, 20, 201])\n"
     ]
    }
   ],
   "source": [
    "print(test_tensor.shape)\n",
    "prediction_tensor = torch.zeros(1, 20, 201).float()\n",
    "print(prediction_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "297a16fa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 1, 201])\n",
      "(201, 1)\n",
      "(201, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with torch.no_grad():\n",
    "    prediction = lem(test_tensor)\n",
    "    prediction = prediction.view(1, 1, 201).float()\n",
    "    prediction_tensor[:, 0, :] = prediction\n",
    "    for i in range(19):\n",
    "        prediction = lem(prediction)\n",
    "        prediction = prediction.view(1, 1, 201).float()\n",
    "        prediction_tensor[:, i+1, :] = prediction\n",
    "        \n",
    "print(prediction.shape)\n",
    "\n",
    "final_out = prediction.detach().numpy().reshape(-1,1)\n",
    "final_true = u[-1,:].reshape(-1,1)\n",
    "\n",
    "print(final_out.shape)\n",
    "print(final_true.shape)\n",
    "\n",
    "x = x.reshape(-1, 1)\n",
    "\n",
    "plt.plot(x, final_out)\n",
    "plt.plot(x, final_true)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4b7206d",
   "metadata": {},
   "source": [
    "### error at final time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "f25db352",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.01426507959435885 \n"
     ]
    }
   ],
   "source": [
    "# Convert NumPy arrays to PyTorch tensors\n",
    "final_out_tensor = torch.from_numpy(final_out)\n",
    "final_true_tensor = torch.from_numpy(final_true)\n",
    "# final_true_tensor = torch.abs(final_true_tensor)\n",
    "\n",
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean((final_out_tensor - final_true_tensor)**2)/torch.mean(final_true_tensor**2)\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dae20135",
   "metadata": {},
   "source": [
    "### Error in whole testing dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5eaf1fee",
   "metadata": {},
   "outputs": [],
   "source": [
    "# exact\n",
    "u_test = u\n",
    "u_test_full = u_test[80:100, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "20d9252f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 201)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u_test_full.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "8d1fb210",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 20, 201])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e445eba",
   "metadata": {},
   "source": [
    "### L2 norm "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89d4bc2d",
   "metadata": {},
   "source": [
    "### Changed prediction tensor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ee9bf8bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 201])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "k1 = (prediction_tensor - u_test_full)**2\n",
    "u_test_full_tensor = torch.tensor(u_test_full**2)\n",
    "u_test_full_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "7a13682f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Error Test:  0.004932424534439651 %\n"
     ]
    }
   ],
   "source": [
    "# Compute the relative L2 error norm (generalization error)\n",
    "relative_error_test = torch.mean(k1)/ torch.mean(u_test_full_tensor)\n",
    "\n",
    "print(\"Relative Error Test: \", relative_error_test.item(), \"%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa356244",
   "metadata": {},
   "source": [
    "### Max absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "d4df8fb1",
   "metadata": {},
   "outputs": [],
   "source": [
    "R_abs = torch.max(prediction-u_test_full)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "765c1b67",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.1376, dtype=torch.float64)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R_abs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53123052",
   "metadata": {},
   "source": [
    "### mean absolute error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "39b783e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "R_mean = torch.mean(torch.abs(prediction - u_test_full))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "0e98bd87",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.0348, dtype=torch.float64)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R_mean"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3e6557b",
   "metadata": {},
   "source": [
    "### Explained variance error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "f147aa3c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Explained Variance Score: 0.9956219130806301\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "a = prediction\n",
    "b = u_test_full\n",
    "# Assuming 'a' is your predicted values (model's predictions) and 'b' is the true values (ground truth)\n",
    "# Make sure 'a' and 'b' are PyTorch tensors\n",
    "b = torch.tensor(b)\n",
    "# Calculate the mean of 'b'\n",
    "mean_b = torch.mean(b)\n",
    "\n",
    "# Calculate the Explained Variance Score\n",
    "numerator = torch.var(b - a)  # Variance of the differences between 'b' and 'a'\n",
    "denominator = torch.var(b)    # Variance of 'b'\n",
    "evs = 1 - numerator / denominator\n",
    "\n",
    "print(\"Explained Variance Score:\", evs.item())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a2555b6",
   "metadata": {},
   "source": [
    "### Contour plot 80 PINN and 20 LEM solution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "088f6ee2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([20, 201])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction_tensor = torch.squeeze(prediction_tensor)\n",
    "prediction_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "656a2d06",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 1, 201])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "2cd25700",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 80, 201])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "37ac5ef9",
   "metadata": {},
   "outputs": [],
   "source": [
    "conc_u = torch.squeeze(input_tensor)\n",
    "prediction_tensor = torch.squeeze(prediction_tensor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "249d001b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([100, 201])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "concatenated_tensor = torch.cat((conc_u, prediction_tensor), dim=0)\n",
    "\n",
    "concatenated_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "99f14a63",
   "metadata": {},
   "outputs": [],
   "source": [
    "t1 = np.linspace(0, 1 , 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b620cee4",
   "metadata": {},
   "source": [
    "#### Snapshots at particular time\n",
    "### t = 0.81, 0.99"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "767a1e8a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "b0f931ea",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# # Make sure the font is Times Roman\n",
    "# plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# # Perform the prediction\n",
    "# with torch.no_grad():\n",
    "#     prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-2, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u[-2, :].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 0.99}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "\n",
    "# Increase font size for x and y axis numbers\n",
    "ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('LEM_0.99_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "3ac2cc78",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans.\n",
      "findfont: Font family ['Times New Roman'] not found. Falling back to DejaVu Sans.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "# Create the figure and axis objects with reduced width\n",
    "fig, ax = plt.subplots(figsize=(5, 5))  # You can adjust the width (7 inches) and height (5 inches) as needed\n",
    "\n",
    "# Make sure the font is Times Roman\n",
    "plt.rcParams['font.family'] = 'Times New Roman'\n",
    "\n",
    "# Perform the prediction\n",
    "with torch.no_grad():\n",
    "    prediction = lem(test_tensor)\n",
    "\n",
    "final_time_output = prediction_tensor[-20, :]\n",
    "final_out = final_time_output.detach().numpy().reshape(-1, 1)\n",
    "final_true = u[-20, :].reshape(-1, 1)\n",
    "\n",
    "# Plot the data with red and blue lines, one with dotted and one with solid style\n",
    "ax.plot(x, final_out, color='red', linestyle='dotted', linewidth=12, label='Prediction')\n",
    "ax.plot(x, final_true, color='blue', linestyle='solid', linewidth=7, label='True')\n",
    "\n",
    "# Set the axis labels with bold font weight\n",
    "ax.set_xlabel(r\"${x}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "ax.set_ylabel(r\"${u(x, t)}$\", fontsize=26, color='black', fontdict={'weight': 'bold'})\n",
    "\n",
    "# Set the title with bold font weight\n",
    "ax.set_title(r\"${t = 0.81}$\", fontsize=26, color='black', fontweight='bold')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 3\n",
    "ax.set_xticks([-1, 0, 1])\n",
    "ax.set_yticks([-1, 0, 1])\n",
    "\n",
    "# Set tick labels fontweight to bold and increase font size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20, width=2, length=10)\n",
    "\n",
    "# # Set the fontweight for tick labels to bold\n",
    "# for tick in ax.get_xticklabels() + ax.get_yticklabels():\n",
    "#     tick.set_weight('bold')\n",
    "\n",
    "# Set the spines linewidth to bold\n",
    "ax.spines['top'].set_linewidth(2)\n",
    "ax.spines['right'].set_linewidth(2)\n",
    "ax.spines['bottom'].set_linewidth(2)\n",
    "ax.spines['left'].set_linewidth(2)\n",
    "\n",
    "# Set the legend\n",
    "# ax.legend()\n",
    "\n",
    "plt.savefig('LEM_0.81_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "acd9f6c3",
   "metadata": {},
   "source": [
    "### 80-20 (80 for PINN and 20 extrapolation using LEM)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "11b46593",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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29P/YGa/aWZHmtl1zeyPgee3533Y3d+3xfwuBv5P++PxwAfM7FbtB4o70hyq+Zo0pehP2+bVF6luns85M7sRzX/AD6LpF3Jf4AIzO2jM135bTPE9ZvYBM3usmd28fa5dzcxuaWZ/AXyEJjhbA56sw6NL1835de5/AV83s78ws7uZ2XXM7Mrt94cC/8neCpB/A964xfz0OieDUuG95aiNJYnn0/xjJ0KvczI4ZnYTM7vNxhd7l/jZ6O/br/03XVaf50TmwNx90XNYOmZmwKuAx4zZ5ALgIe6+T9m4mX2cppHnN9z9qDHjH03zRuF6Y8b/DHDXSdUlZrYb+GOa/kGb7QFOcvdXj7u8SJfM6znXPk+etY2pPNvdd28a41Tg5wuX+wnwOHd/2zb2JbIwc3zO3Rd4R2AK7wN+3d3PmzDH3eh1TgZi3u8t2+0OA74L7ARe5+6PDs7tVPQ6JwMz8ryJONrdz9risvo8J5JIlVsL4I3HAvcHPgicA1wCfB34e+C4rd58bGP8r9McRvlZNP1/LgR+Cnwa+B3gF0vLptoP4Hei+RDxfZpDyn6b5r/gt9YfQumTeT/nZvQ04M9pqkzOovkAsqed478BfwjcQG/4pU/m+Jz7BM3ypX8CTqOpmNxD87w5A/gHmqXB95wUbLVz3I1e52QgKr3OPYwm2ILmuRal1zmRbdLnOZHtU+WWiIiIiIiIiIj0liq3RERERERERESktxRuiYiIiIiIiIhIbyncEhERERERERGR3lK4JSIiIiIiIiIivaVwS0REREREREREekvhloiIiIiIiIiI9JbCLRERERERERER6S2FWyIiIiIiIiIi0lsKt0REREREREREpLcUbomIiIiIiIiISG8p3BIREZHeMLMHm5mb2SVmtmvR8xERERGRxVO4JSIiIn1yi/b7ae6+Z6EzEREREZFOULglIiIifbIRbp2y0FmIiIiISGco3BIREZE+OaH9fuoiJyEiIiIi3WHuvug5iIiIiIxlZlcGzitsdra7H1FhOiIiIiLSMarcEhERka67WWCbL8x9FiIiIiLSSarcEhERkU4zsx3AFYDfAp4LfA84ZtNme9z9ktpzExEREZHF27noCYiIiIhM4u5rwAVmduP2V6e6+wWLnJOIiIiIdIeWJYqIiEhf/Hz7XUdKFBEREZHLKNwSERGRzjOz/YDLKrcWOBURERER6RiFWyIiItIHNwF2tadPXeA8RERERKRjFG6JiIhIHxzXfr8A+MoC5yEiIiIiHaNwS0RERPrguPb7512HehYRERGREQq3REREpA82msmfushJiIiIiEj3KNwSERGRPrhZ+/3zC52FiIiIiHSOwi0RERHpNDMz4ND2x58uci4iIiIi0j0Kt0RERKTT2h5bP2h/fKKZ3cTMDjazg8zsgEXOTUREREQWT+GWiIiI9MGr2++3B75IU8F1PvD3C5uRiIiIiHTCzkVPQERERCTgj4EfAY8EbgBsVGyduqgJiYiIiEg3mI6mLSIiIiIiIiIifaVliSIiIiIiIiIi0lsKt0REREREREREpLcUbomIiIiIiIiISG8p3BIRERERERERkd5SuCUiIiIiIiIiIr2lcEtERERERERERHpL4ZaIiIiIiIiIiPSWwi0REREREREREekthVsiIiIiIiIiItJbCrdERERERERERKS3FG6JiIiIiIiIiEhvKdwSEREREREREZHe+v8BgoQ9aRcU7UUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-1, 1, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='coolwarm')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$u(x, t)$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=0.8, color='black', linestyle='dotted', linewidth=5)\n",
    "\n",
    "#plt.savefig('Contour_LEM_20.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_LEM_20.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e98c486",
   "metadata": {},
   "source": [
    "### exact solution contour"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "40d9dede",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = u\n",
    "\n",
    "# Define custom color levels\n",
    "x = np.linspace(-1, 1, concatenated_array.shape[1])  # Replace 0 and 1 with your actual x range\n",
    "t = np.linspace(0, 1, concatenated_array.shape[0])  # Replace 0 and 1 with your actual t range\n",
    "X, T = np.meshgrid(x, t)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 400)\n",
    "\n",
    "# Plot the contour with interpolated data\n",
    "plt.figure(figsize=(20, 5))\n",
    "plt.pcolormesh(T, X, concatenated_array, shading='auto', cmap='coolwarm')\n",
    "\n",
    "# Set the fontweight for axis labels to regular (not bold)\n",
    "plt.xlabel(\"$t$\", fontsize=26)\n",
    "plt.ylabel(\"$x$\", fontsize=26)\n",
    "plt.title(\"$u(x, t)$\", fontsize=26)\n",
    "\n",
    "# Set tick labels fontweight to regular (not bold) and increase font size\n",
    "plt.tick_params(axis='both', which='major', labelsize=20, width=3, length=10)\n",
    "\n",
    "# Set the fontweight for tick labels to regular (not bold)\n",
    "for tick in plt.gca().get_xticklabels() + plt.gca().get_yticklabels():\n",
    "    tick.set_weight('normal')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "\n",
    "cbar1 = plt.colorbar()\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "# Set the fontweight and fontsize for color bar tick labels\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_weight('normal')\n",
    "    t.set_fontsize(26)  # Increase the font size for color bar tick labels\n",
    "\n",
    "# Increase the size of numbers on axis and color bar\n",
    "plt.xticks(fontsize=26)\n",
    "plt.yticks(fontsize=26)\n",
    "\n",
    "# Increase the tick size and width of the color bar\n",
    "cbar1.ax.tick_params(axis='both', which='major', labelsize=30, width=3,  length=10)\n",
    "\n",
    "#plt.savefig('Contour_Exact.pdf', dpi=500, bbox_inches=\"tight\")\n",
    "plt.savefig('contour_exact.jpeg', dpi=500, bbox_inches=\"tight\")\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6627cf46",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
